Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Javascript/organizing your javascript code/classes - Turkish Translation #851

Open
wants to merge 5 commits into
base: dev
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,50 +1,46 @@
### Introduction
### Giriş

JavaScript does _not_ have classes in the same sense as other Object Oriented languages like Java or Ruby. ES6, however, _did_ introduce a syntax for object creation that uses the `class` keyword. It is basically a new syntax that does the _exact_ same thing as the object constructors and prototypes we learned about in the constructor lesson.
JavaScript, Java veya Ruby gibi diğer Nesne Yönelimli dillerde olduğu gibi _tam olarak_ sınıflara sahip değildir, ancak ES6, `class` anahtar kelimesini kullanan nesne oluşturma için bir sözdizimi tanıttı. Bu temelde, constructor dersinde öğrendiğimiz nesne yapılandırıcıları ve prototiplerle _tam olarak_ aynı işi yapan yeni bir sözdizimidir.

There is a bit of controversy about using the class syntax, however. Opponents argue that `class` is basically just _syntactic sugar_ over the existing prototype-based constructors and that it's dangerous and/or misleading to obscure what's _really_ going on with these objects. Despite the controversy, classes are beginning to crop up in real code bases that you are almost certainly going to encounter such as frameworks like React (especially if you end up working with class-based React code).
Ancak, `class` sözdizimini kullanmak konusunda biraz tartışma var. Karşıtlar, `class`'ın temelde var olan prototype tabanlı yapılandırıcıların üzerine konan _sözdizimsel şeker_ (syntatic sugar) olduğunu ve bu nesnelerle gerçekte neler olup bittiğini gözden kaçırmak için tehlikeli ve/veya yanıltıcı olduğunu iddia ediyorlar. Tartışmalara rağmen, sınıfların gerçek kod tabanlarında ortaya çıkmaya başladığını ve muhtemelen karşılaşacağınız gibi çerçevelerde (özellikle sınıf tabanlı React koduyla çalışmayı tercih ederseniz) kullanıldığını göz önünde bulundurmanız önemlidir.

Since we've already gone fairly in-depth with Constructors, you don't have too much left to learn here beyond the new syntax. If you choose to use classes in your code (that's fine!) you can use them much the same way as object constructors.
Yapılandırıcılar konusunda oldukça derinleştik, burada öğrenecek pek fazla şeyiniz kalmadı, sadece yeni sözdizimi var. Eğer kodunuzda sınıfları kullanmayı seçerseniz (yapmakta hiçbir sakınca yok!), onları nesne yapılandırıcılarıyla hemen hemen aynı şekilde kullanabilirsiniz.

### Lesson overview
### Derse genel bakış

This section contains a general overview of topics that you will learn in this lesson.
Bu bölüm, bu derste öğreneceğiniz konuların genel bir özetini içerir.

- Describe the pros and cons of using classes in JavaScript.
- Briefly discuss how JavaScript's object creation differs from a language like Java or Ruby.
- Explain the differences between an object constructor and a class.
- Explain what "getters" and "setters" are.
- Understand what computed names and class fields are.
- Explain how to implement private class fields and methods.
- Describe function binding.
- Use inheritance with classes.
- Understand why composition is generally preferred to inheritance.
- JavaScript'te sınıfların kullanımının artıları ve eksilerini açıklama.
- JavaScript'in nesne oluşturma işlemi Java veya Ruby gibi bir dil ile nasıl farklılık gösterir, kısaca tartışma.
- Bir nesne yapılandırıcısı ile bir sınıf arasındaki farkları açıklama.
- "getters" ve "setters" kavramlarını açıklama.
- Hesaplanmış isimlerin ve sınıf alanlarının ne olduğunu anlama.
- Özel sınıf alanlarını ve yöntemlerini nasıl uygulayacağınızı açıklama.
- Fonksiyon bağlama kavramını açıklama.
- Sınıflarla miras alma işlemini gerçekleştirme.
- Neden kompozisyonun genellikle mirasa tercih edildiğini anlama.

### Assignment
### Ödev

<div class="lesson-content__panel" markdown="1">

1. [JavaScript.info's article on Getters and Setters](https://javascript.info/property-accessors) should get you up to
speed on "Getters and Setters".
1. [JavaScript.info's article on Getters and Setters](https://javascript.info/property-accessors) size "Getters ve Setters" konusunda bilgi sahibi olmanızı sağlayacaktır.

2. [This article](https://javascript.info/class) is probably just about all you need to start using `class` syntax
confidently.
2. [This article](https://javascript.info/class) makalesi `class` sözdizimini özgüvenli bir şekilde kullanmanız için gereken tüm gerekenleri verecektir.

3. [The MDN docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) are, as usual, a great
resource for going a little deeper. Look especially at the ['extends' reference page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/extends),
including the ['Mixins' section](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/extends#mix-ins). In some frameworks like React, you can use classes to create your components and make them `extend` the core React component which gives you access to all their built-in functionality (though this is not the only way to create components. This will all be covered later in React section of the course). Classes can also have [private features](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields) that allow you to implement privacy similarly to factory functions.
3. Özellikle ['extends' reference page](https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Classes/extends)'a bakın, burada ['Mixins' section](https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Classes/extends#mix-ins) içeren kısımlara göz atın. Bazı framework'lerde React gibi, sınıfları bileşenlerinizi oluşturmak ve onları temel React bileşenini `extend` etmek için kullanabilirsiniz, bu da size tüm yerleşik işlevselliğe erişim sağlar (ancak bu bileşenleri oluşturmanın tek yolu değildir. Bu, kursun ilerleyen bölümlerinde React bölümünde ele alınacaktır). Sınıflar ayrıca [private features](https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Classes/Private_class_fields) sahip olabilir, bu da size fabrika fonksiyonlarına benzer şekilde gizlilik uygulamanıza olanak tanır.

4. Classes can have [static properties and methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static) which are properties and methods that are accessed on the class itself and not on the instance of a class. This is similar to how some string methods are accessed on the instance of a string itself e.g. `someString.slice(0, 5)` whereas some methods are called on the String constructor directly e.g. `String.fromCharCode(79, 100, 105, 110)`.
4. Sınıflar [static properties and methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static) sahip olabilir; bunlar, bir sınıfın örneğine değil, sınıfın kendisine erişilen özellikler ve metotlardır. Bu, bazı dize yöntemlerinin dize örneği üzerinde erişildiği şekilde çalışır, örneğin `someString.slice(0, 5)`; bazı yöntemler ise doğrudan String yapılandırıcısı üzerinde çağrılır, örneğin `String.fromCharCode(79, 100, 105, 110)`.

5. Read [this article covering opinions regarding the pros and cons of classes](https://medium.com/@rajaraodv/is-class-in-es6-the-new-bad-part-6c4e6fe1ee65). [FunFunFunction's video on Composition over Inheritance](https://www.youtube.com/watch?v=wfMtDGfHWpA) elaborates on the cons mentioned in the article and does a great job of going over the topic.
5. [this article covering opinions regarding the pros and cons of classes](https://medium.com/@rajaraodv/is-class-in-es6-the-new-bad-part-6c4e6fe1ee65). [FunFunFunction's video on Composition over Inheritance](https://www.youtube.com/watch?v=wfMtDGfHWpA) makalede belirtilen eksileri detaylı bir şekilde ele alır ve konuyu çok iyi anlatır.
</div>

### Practice
### Pratik

Go back to your [Library](https://www.theodinproject.com/lessons/node-path-javascript-library) project and refactor it to use `class` instead of plain constructors. Don't forget to use the git workflow you learned in [this foundations lesson](https://www.theodinproject.com/lessons/foundations-revisiting-rock-paper-scissors) to work on a new feature. You should get used to working like this!
[Library](https://www.theodinproject.com/lessons/node-path-javascript-library) projesine geri dönün ve basit yapılandırıcılar yerine `class` kullanacak şekilde yeniden düzenleyin. Yeni bir özellik üzerinde çalışmak için [this foundations lesson](https://www.theodinproject.com/lessons/foundations-revisiting-rock-paper-scissors) öğrendiğiniz git iş akışını kullanmayı unutmayın. Bu şekilde çalışmaya alışmalısınız!

### Knowledge check
This section contains questions for you to check your understanding of this lesson. If you’re having trouble answering the questions below on your own, review the material above to find the answer.
### Bilgi ölçme
Bu bölüm, bu dersi anladığınızı kontrol etmeniz için sorular içermektedir. Aşağıdaki soruları kendi kendinize yanıtlamakta zorlanıyorsanız, yanıtı bulmak için yukarıdaki materyali gözden geçirin.

- [Describe the pros and cons of using classes in JavaScript.](https://rajaraodv.medium.com/is-class-in-es6-the-new-bad-part-6c4e6fe1ee65)
- [How does JavaScript's object creation differ from a language like Java or Ruby?](https://rajaraodv.medium.com/is-class-in-es6-the-new-bad-part-6c4e6fe1ee65)
Expand All @@ -57,8 +53,8 @@ This section contains questions for you to check your understanding of this less
- [How is inheritance used with classes?](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#inheritance)
- [Why is favoring Composition over Inheritance suggested?](https://www.youtube.com/watch?v=wfMtDGfHWpA)

### Additional resources
### Ek kaynaklar

This section contains helpful links to other content. It isn't required, so consider it supplemental.
Bu alanda içerikle alakalı faydalı linkler bulunmaktadır. Zorunlu değildir, ek olarak düşünülmelidir.

- [This playlist](https://www.youtube.com/playlist?list=PLtwj5TTsiP7uTKfTQbcmb59mWXosLP_7S) from Stephen Mayeux, explains ES6 Classes and some of their methods with easy to follow examples.
- Stephen Mayeux'dan [This playlist](https://www.youtube.com/playlist?list=PLtwj5TTsiP7uTKfTQbcmb59mWXosLP_7S), ES6 Sınıflarını ve bazı yöntemlerini kolay takip edilebilir örneklerle açıklar.
Loading