Bu meselesi uygulanması karşı zımnen . C ++ veya Java sahneyi vurmadan önce özellikler OOP'taydı (Simula'da kenarlarda biraz pürüzlüydüler ve Smalltalk için esaslardı). Özelliklere sahip varlıklar kavramsal olarak kod eklenmiş değerlerden farklıdır. Bazı dil kurallarındaki get & set önekleri yalnızca suların çamurlanmasına hizmet eder; alanlara ve özellikler arasındaki farkın farkına varırlar, alanlara dil için deyimsel bir şekilde get / set olmadan doğrudan erişilebildiğini varsayarlar ve bu sızıntı yapar.
OOP'un asıl amacı, şeylere "gerçek" dünyadaki varlıklarmış gibi davranmaktır, sadece bazı kodların karıştığı yapılar gibi davranmak değildir. Başka bir programcının şeyleri uygulama şeklim hakkında çok, çok az şey bilmesi gerekir ve elde etmelerine izin verilen ve / veya ayarladıkları çeşitli değerlerden hangilerinin gerçek ve hangilerinin sanal olduğu ile ilgili olmamalıdır. Bir vektörümle karşılaşırsanız, açı ve büyüklük mü yoksa vektör nesnesinin içindeki gerçek ve hayali bileşenleri mi sakladığımı bilmeniz gerekmez. Kütüphanemin V2.0'daki temsilini değiştirirsem, kodunuzu hiç etkilememelidir (yine de harika yeni özelliklerden yararlanmak isteyebilirsiniz). Benzer şekilde, bir işletmenin varlık dışındaki verilere bağlı olabilecek özellikleri vardır, ama kuşkusuz sözcüksel açıdan özelliklerdir. O "nesne" için mevcut olan verilerin doğum tarihi (özel bir değişmez üye) ve bugünkü olduğunu bilseniz bile insanlara "kaç yaşındasınız" değil, "lütfen yaşınızı bana gösterecek hesaplamayı yapın" diye soruyorsunuz. tarih (saat dilimine, gün ışığından yararlanma saatine ve Uluslararası Tarih Satırına bağlı olarak herkese açık, otomatik olarak artan bir çevresel mülk). Yaş, bir yöntem değil, bir yöntemdir, oraya ulaşmak için bazı hesaplama gerektirir ve (yapay olarak sınırlı ömürleri olan şeylerin oyuncak bilgisayar gösterimleri hariç) bir alan olarak saklanamaz. o "nesne" için mevcut olan verilerin doğum tarihi (özel bir değişmez üye) ve bugünün tarihi (saat dilimine, gün ışığından yararlanma saatine ve Uluslararası Tarih Satırına bağlı olarak, herkese açık, otomatik olarak artan bir çevresel mülk) olduğunu bilmenize rağmen ). Yaş, bir yöntem değil, bir yöntemdir, oraya ulaşmak için bazı hesaplama gerektirir ve (yapay olarak sınırlı yaşam sürelerine sahip şeylerin oyuncak bilgisayar gösterimleri hariç) bir alan olarak saklanamaz. o "nesne" için mevcut olan verilerin doğum tarihi (özel bir değişmez üye) ve bugünün tarihi (saat dilimine, gün ışığından yararlanma saatine ve Uluslararası Tarih Satırına bağlı olarak, herkese açık, otomatik olarak artan bir çevresel mülk) olduğunu bilmenize rağmen ). Yaş, bir yöntem değil, bir yöntemdir, oraya ulaşmak için bazı hesaplama gerektirir ve (yapay olarak sınırlı ömürleri olan şeylerin oyuncak bilgisayar gösterimleri hariç) bir alan olarak saklanamaz.
Mülkleri alanların ve yöntemlerin piç çocuğu olarak düşünmek yerine, yöntemlerin özel bir mülk türü olarak - varlıklarınızın oldukları şeylerden ziyade yapabileceği şeyler - çok daha tatmin edicidir. Aksi takdirde, nesne / varlıklarla kavramsal olarak ilgilenmezsiniz, onlara kod eklenmiş olan veri koleksiyonlarıyla ilgilenirsiniz. Uygulamalarla aynı olabilir, fakat etkileri farklıdır.
Bununla birlikte, bu soyutlamanın bir bedeli olduğunu söylemek gereksizdir. Bir sınıfı kullanan bir programcı, depolandığı gibi verilere erişip erişmediğini veya hesaplanması gereken değerleri alıp ayarlayamadığını söyleyemiyorsa, dilin de mutlaka belirsiz (ve dolayısıyla her şeyin erişimciler / seçiciler ve değerler arasında aracılık etmesini gerektirir). "Kodlu yapılar" ile kavramsal olarak yanlış bir şey yoktur - kesinlikle çok daha verimli olabilirler - ancak her yere uygulama sızdırıyorlar ve bu OOP'un ortadan kaldırması gereken şeylerden biri.