Skip to content

Commit 69ee961

Browse files
gnwxsumn2u
authored andcommitted
translated classes section
1 parent 0b0fbf4 commit 69ee961

File tree

4 files changed

+164
-0
lines changed

4 files changed

+164
-0
lines changed

tr/classes/README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
layout: editorial
3+
chapter: 15
4+
pageNumber: 75
5+
---
6+
7+
# Bölüm 15
8+
9+
# Classes (Sınıflar)
10+
11+
Sınıflar, bir nesne oluşturmak için kullanılan şablonlardır. Veriler üzerinde çalışmak için verileri kod ile kapsüller (_encapsulation_). Bir sınıf oluşturmak için `class` anahtar sözcüğü kullanılır. Ve bir sınıfla oluşturulan bir objeyi oluşturmak ve başlatmak için `constructor` (yapıcı) adı verilen belirli bir method kullanılır. Araba sınıfının bir örneği aşağıda gösterilmiştir:
12+
13+
```javascript
14+
class Car {
15+
constructor(name, year) {
16+
this.name = name;
17+
this.year = year;
18+
}
19+
age() {
20+
let date = new Date();
21+
return date.getFullYear() - this.year;
22+
}
23+
}
24+
25+
let myCar = new Car("Toyota", 2021);
26+
console.log(myCar.age()); // 1
27+
```
28+
29+
{% hint style="info" %}
30+
Sınıf, kullanımından önce tanımlanmalıdır.
31+
{% endhint %}
32+
33+
Sınıf gövdesinde, yöntemler veya constructors (yapıcılar) tanımlanır ve `strict mode`da çalıştırılır. `strict mode` 'a uymayan sözdizimi hataya neden olur. 

tr/classes/access-modifiers.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
---
2+
chapter: 15
3+
pageNumber: 78
4+
---
5+
6+
# Access Modifiers (Erişim Düzenleyicileri)
7+
8+
`public`, `private` ve `protected`, sınıfın dışarıdan erişimini kontrol etmek için kullanılan üç erişim düzenleyicisidir. Varsayılan olarak, sınıfın tüm öğeleri (özellikler, alanlar, yöntemler veya işlevler) sınıf dışından herkese açıktır.
9+
10+
```javascript
11+
class Car {
12+
constructor(name) {
13+
this.name = name;
14+
}
15+
static hello(x) {
16+
return "Hello " + x.name;
17+
}
18+
}
19+
let myCar = new Car("Toyota");
20+
console.log(Car.hello(myCar)); // Hello Toyota
21+
```
22+
23+
`private` öğelerine yalnızca sınıf içinden erişilebilir ve dışarıdan erişilemez. Private `#` ile başlamalıdır.
24+
25+
```javascript
26+
class Car {
27+
constructor(name) {
28+
this.name = name;
29+
}
30+
static hello(x) {
31+
return "Hello " + x.name;
32+
}
33+
#present(carname) {
34+
return "I have a " + this.carname;
35+
}
36+
}
37+
let myCar = new Car("Toyota");
38+
console.log(myCar.#present("Camry")); // Error
39+
console.log(Car.hello(myCar)); // Hello Toyota
40+
```
41+
42+
`protected` öğelerine yalnızca sınıfın içinden ve onu türeterek oluşturan sınıflardan erişilebilir. Bunlar, miras alan sınıfın üst sınıfa da erişim kazanması nedeniyle dahili arayüz için kullanışlıdır. `protected` öğeler `_` ile gösterilir.
43+
44+
```javascript
45+
class Car {
46+
constructor(brand) {
47+
this.carname = brand;
48+
}
49+
_present() {
50+
return "I have a " + this.carname;
51+
}
52+
}
53+
54+
class Model extends Car {
55+
constructor(brand, mod) {
56+
super(brand);
57+
this.model = mod;
58+
}
59+
show() {
60+
return this._present() + ", it is a " + this.model;
61+
}
62+
}
63+
let myCar = new Model("Toyota", "Camry");
64+
console.log(myCar.show()); // I have a Toyota, it is a Camry
65+
```

tr/classes/inheritance.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
chapter: 15
3+
pageNumber: 77
4+
---
5+
6+
# Inheritance (Kalıtım - Miras)
7+
8+
Kalıtım, bir sınıfın mevcut özelliklerini ve yöntemlerini genişlettiği için kodun yeniden kullanılabilirliği açısından yararlıdır. Bir sınıf kalıtımı oluşturmak için `extends` anahtar sözcüğü kullanılır.  
9+
10+
```javascript
11+
class Car {
12+
constructor(brand) {
13+
this.carname = brand;
14+
}
15+
present() {
16+
return "I have a " + this.carname;
17+
}
18+
}
19+
20+
class Model extends Car {
21+
constructor(brand, mod) {
22+
super(brand);
23+
this.model = mod;
24+
}
25+
show() {
26+
return this.present() + ", it is a " + this.model;
27+
}
28+
}
29+
30+
let myCar = new Model("Toyota", "Camry");
31+
console.log(myCar.show()); // I have a Camry, it is a Toyota.
32+
```
33+
34+
{% hint style="info" %}
35+
Üst sınıfın prototipi bir `Object` veya `null` olmalıdır. 
36+
{% endhint %}
37+
38+
`super` yöntemi bir constructor(yapıcının) içinde kullanılır ve üst sınıfa atıfta bulunur. Bu sayede, ana sınıfın özelliklerine ve metodlarına erişilebilir.

tr/classes/static.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
chapter: 15
3+
pageNumber: 76
4+
---
5+
6+
# Static (Statik)
7+
8+
`static`anahtar kelimesi, bir sınıf için statik yöntemleri veya özellikleri tanımlar. Bu yöntemler ve özellikler, sınıfın içinde çağrılır. 
9+
10+
```javascript
11+
class Car {
12+
constructor(name) {
13+
this.name = name;
14+
}
15+
static hello(x) {
16+
return "Hello " + x.name;
17+
}
18+
}
19+
let myCar = new Car("Toyota");
20+
21+
console.log(myCar.hello()); // Hata verir
22+
console.log(Car.hello(myCar));
23+
// Sonuç: Hello Toyota
24+
```
25+
26+
{% hint style="info" %}
27+
Aynı sınıfın başka bir statik yönteminin statik yöntemine veya özelliğine `this` anahtar sözcüğü kullanılarak erişilebilir;
28+
{% endhint %}

0 commit comments

Comments
 (0)