Nesneye yönelik programlama dilini öğrenmek istedim, sadece OOP kavramını bilmek için herhangi bir amaç için istemiyorum. Peki birisi bana hangi dili öğrenmeye başlamam gerektiğini söyleyebilir mi?
Nesneye yönelik programlama dilini öğrenmek istedim, sadece OOP kavramını bilmek için herhangi bir amaç için istemiyorum. Peki birisi bana hangi dili öğrenmeye başlamam gerektiğini söyleyebilir mi?
Yanıtlar:
Bazı öneriler:
OOP çubuğunda hiç okumadığım en iyi kitap Bertrand Meyer'ın Nesneye Dayalı Yazılım Yapısı . Yerlerde çok düşünmeniz gerekeceği için 'kolay' bir okuma değil. Ama OO ilkelerini açıklamak için gördüğüm en iyi işi yapıyor.
Diller gelince: C ++ 'dan uzak dururum. Öğrenme amaçları için çok büyük. OO'yu anlamanıza gerçekten yardımcı olacak bir dil istiyorsanız (genel uygulamaları yazacağınız / kullanarak iş bulacağınız dilin aksine) smalltalk'a bakın. Veya Eiffel (yukarıdaki Meyer'in kitabındaki dil).
Biraz daha yaygın olan ancak hala OO prensiplerini sadakatle destekleyen bir dil istiyorsanız, Python iyi bir bahistir. Java ve C # statik yazma istiyorsanız da iyi.
Dikkat edilmesi gereken bir kelime: dil size OO öğretmez. Yalnızca OO kavramlarını ne kadar iyi desteklediğine yardımcı olabilir (veya engelleyebilir). OO öğrenmek gerçekten OO terimleriyle düşünmeyi öğrenmekle ilgilidir . Bunun için Meyer'ın kitabına geri dönecektim.
hth.
OOPS'u denemek için C ++, Java, C # vb. Gibi nesneye yönelik dillerden herhangi birini öğrenebilirsiniz.
Gerçekten OOP öğrenmek istiyorsanız, dillerin ötesinde düşünmeniz ve bunun, bu gerçek dünyada onları nasıl yönettiğimiz gibi, yazılım programlarında yer alan manga karmaşıklığına yardımcı olan bir paradigma olduğunu anlamanız gerekir. Daha sonra OO'da Polimorfizm, Kalıtım, Kapsülleme (PIE) vb.
Grady Booch'un Çok Nesneye Dayalı Analiz ve Uygulamalarla Tasarım (2. Baskı) hakkında iyi kitaplar var
Ayrıca, fascinatingoops.com ile başlamak için yeterince basit bulduğum gibi blogları deneyebilirsiniz.
OOP öğrenmek ister misin? Bir cevap - Smalltalk.
Zarif bir dildir ve özü OO'dur. OOP'yi en başından öğreneceksiniz ve diğer dillerin dahil etmeyi başardığı diğer tüm dikkat dağıtıcı unsurlara engel olmayacaksınız.
Smalltalk kazanır. Ve bazı iyi ücretsiz e-kitaplar da var (bakınız: Stephane Ducasse )
C ++ ya da Smalltalk gibi atalardan birini öğrenmeniz gerekir. C ++, nesne yönlendirme, bellek yönetimi, referans ve değer gibi kavramlar arasında temiz bir ayrım sunar ve güçlü bir genel desteğe sahiptir.
Java veya C # gibi bir .NET dili öğrenmeyin. Java gibi bir dil öğrendiğinizde, "Nesneler her zaman öbek üzerinde ve her zaman referanstır" gibi şeyler öğrenirsiniz, bu sadece Java için doğrudur ve genel olarak OOP için kesinlikle doğru değildir. Kavramların bu birleşimi (nesne yönelimi, bellek yönetimi, referans vs değer) ilk dil için çok tehlikelidir, çünkü bir kez kafanıza takıldıklarında, onları geri almak çok zor olabilir. C # bu konuda biraz daha iyi ama çok fazla değil. Buna ek olarak, zayıf jenerik programlama desteği ile "Kalıtım bir çekiç ve her şey bir çividir" öğretme eğilimi yüksek olabilir.
OOP kavramlarını öğrenmenin en iyi yolu daha fazla kod yazmak ve sık sık incelenmesini sağlamaktır. Alıştırma yapmak iyi bir programcıdır.
Gerçek dünya senaryolarını düşünün, bir sorun bildirimi tanımlayın - kodda çözün ve gözden geçirin. Yorumlar için her zaman /codereview// adresinden yardım alabilirsiniz :)
Mutlu kodlama !!!
adımlar
OO dünyasına ilk temasım, kötü bir başlangıç olmayan C ++ idi. Ama Python öğrenirken çok geliştim. Fark, dillerden gelir: C ++ 'da fikirleri denemek (' bu sorunu nasıl OO tarzında çözebilirim? ') Yazılacak daha fazla koda ihtiyaç duyar ve Python'da aynı fikri denemekten çok daha fazla tuzak içerir. Bu yüzden Python'u tavsiye ederim.
OOP öğrenmeye çalışırken başka bir dile bakmanız gerektiğini düşünmüyorum. Bana göre, teoriyi kavramak ve daha sonra zaten bildiğim bir şeyle bağlantı kurabiliyorsam uygulamayı uygulamayı öğrenmek daha kolay. Yeni bir sözdizimi bulmak sadece engel olur.
Herhangi bir OOP kitabı ile başlayabilirsiniz. Yine, kendi dilimde bir tane alırdım. Yeniden düzenleme üzerine bir kitap okumak (OOP Style) OOP uygulamasında bana yardımcı oldu. Mevcut bir projeyi aldım (Gereksinimlerin toplanmasından rahatsızlık yok) ve onu geliştirmek için yeni yollar buldum. OOP uğruna sadece OOP değildi. Ardından, yeni bir projede baştan sona nasıl yapılacağını öğrenebilirsiniz. Buradaki mantık, başlangıçtan itibaren her zaman doğru şekilde elde edemeyeceğinizdir. Nerede uygun olduğunun farkına varırsanız, daha iyi olursunuz. Çoğu şey gibi her sorunu çözmez.
Bazı dillerde kesin sınırlamalar vardır. Amacınız birden fazla mirasın efendisi olmaksa, .NET dışarıdadır.
Buradaki geleneksel düşünceye karşı çıkacağım ve OOP'yi kullanmak için en kolay dillerin, onu öğrenmek için mutlaka en iyi diller olmadığını önereceğim . İlk olarak C ++ ile OOP'a maruz kaldım, ancak Larry Wall'in Perl ile OOP hakkındaki Deve kitabı bölümünü okuyana kadar "alamadım". Bir nedenden ötürü, bir nesneyi bir sınıfa açıkça kutsamak zorunda kalana kadar sınıflar ve nesneler arasındaki farkı kavramada sorun yaşadım . OOP'nin temelini GObject ile C'de yapana kadar, bu detayların hiçbirinin sizden gizlenmediğini tam olarak anlamadım. Dil bilincine sahip bir şirket dersi alana kadar en iyi uygulamaları tam olarak anlamadım. Bu çok büyük bir konu,.