Bana göre, bu bir kullanılabilirlik sorunu kadar tanımlayıcı bir konu değil.
Nesneler, karmaşık programları okumayı, yazmayı ve akıl yürütmeyi kolaylaştırmayı amaçlayan bir soyutlamadır. Pratik bir programcı için, bir dilin "nesne yönelimli" nin belirli bir biçimsel tanımının tüm kriterlerini karşılayıp karşılamadığı (birçok rakip olan var gibi görünmektedir!) Sunduğu araçların düşünmek için uygun olup olmadığı kadar önemli değildir. söz konusu nesneler açısından programınız, yani aslında OOP'un sözde verimlilik avantajlarından yararlanma.
C ++ 'da, nesneler , genellikle programcıları bu nesnelerin bellekte nasıl yapılandırıldığına dair kötü meselelerle - düz C'de kodlamayı diğer OOP dillerinden daha anımsatan konularla uğraşmaya zorlayan - çok sızdıran bir soyutlamadır. Örneğin, C ++ Sık Sorulan Yanıtlar bu eleştiriyi sunar (diğerleri arasında):
Bir uygulayıcının C ++ dışındaki OO sistemlerine ve C ++ 'nın "OO" olarak kabul edilmesine izin veren "kapsülleme, kalıtım, polimorfizm" üçlüsü dışındaki OO tanımlarına aşina olması çok faydalıdır. Örneğin, sınır denetimi veya çöp toplama işlemi olmayan bir ortamın bir OO ortamı olmadığı iddiası, C ++ 'a alışkın kişiler için çirkin geliyor. Ancak birçok açıdan bakıldığında, çok mantıklı. Herkes bir nesnenin üzerine yazabilirse, "kapsülleme" nerede? Bir nesneyi atmak sallanan referanslara veya bellek sızıntılarına yol açabilirse, sistem "nesne yönelimli" ? Belirli bir yerde ve zamanda ne tür bir nesnenin bulunduğunu söyleme yeteneğine ne dersiniz? Yazılımın nesnelerle çalıştığını söylüyorsunuz - neredeler? Ve eğer kimse bulamazsa, yazılımda nasıl hata ayıklanır?
C ++, nesne yönelimli, ancak hoş olmayan ve eksiktir: kullanıcıları, verilerinin hatalı bitlerden ziyade "gerçek" nesneler gibi davrandığından emin olmak için çok çaba harcamalıdır . Yani bunun çoğu, sınıflar ve dinamik sevk yararlanarak o 's besbelli bir şey bu yüzden, bir sürü kod süresi içinde C ++ ile yazılmış olan, söz konusu olabilir pratik OOP için kullanın.