Smalltalk'ın Erken Tarihi'ni okuyordum ve anlamını anlamamı sorgulamama neden olan birkaç "ödev" belirtisi var:
OOP birçok motivasyondan gelmesine rağmen, ikisi merkezi idi. Büyük ölçek, ayrıntıların gizlenmesini içeren karmaşık sistemler için daha iyi bir modül şeması bulmaktı ve küçük ölçek ise daha esnek bir atama sürümü bulmak ve ardından onu tamamen ortadan kaldırmak içindi.
( 1960-66 arası - Erken OOP ve altmışlı yılların diğer biçimlendirici fikirleri , Bölüm I)
Simula’dan aldığım şey, şimdi bağları değiştirip hedeflerle atayabileceğin idi . Herhangi bir programcının yapmasını istediğiniz son şey, mecazi olarak sunulmuş olsa bile içsel durumla uğraşmaktır. Bunun yerine, nesneler dinamik bileşenler olarak kullanım için daha uygun olan üst düzey davranışların bulunduğu bir site olarak sunulmalıdır . (...) Bugün "nesne yönelimli programlama" olarak adlandırılan şeylerin çoğunun meraklı yapılarda basitçe eski tarz bir program olması talihsiz bir durumdur. Birçok program, şimdi daha pahalı ekli prosedürlerle yapılan "atama stili" işlemleriyle yüklenir.
( "Nesneye yönelik" Stil , Bölüm IV'ten)
Amacı, nesnelerin cepheler olması gerektiği ve amacı bir nesneye bir örnek değişkeni (yani bir "atama") koymak olan herhangi bir yöntem (veya "mesaj") olduğu gerçeğini yorumlamak doğru mudur? Bu yorumun IV. Bölümdeki sonraki iki ifadesiyle desteklendiği görülmektedir:
Birlikte kullanılan dört teknik - kalıcı durum, polimorfizm, somutlaştırma ve nesneye yönelik hedef olarak yöntemler - gücün çoğunu oluşturur. Bunların hiçbiri “nesne yönelimli bir dil” gerektirmiyor - ALGOL 68 neredeyse bu stile dönüştürülebilir - ve OOPL sadece tasarımcının fikrini belirli bir verimli yöne odaklıyor. Bununla birlikte, kapsülleme hakkını yapmak, yalnızca devletin soyutlamasının yanı sıra, devlet odaklı metaforların programlanmasını engelleme taahhüdüdür.
...ve:
Atama beyanları - soyut olanları bile - çok düşük seviyeli hedefleri ifade eder ve bunların yapılması için daha fazlasına ihtiyaç duyulur. Genel olarak, programcının simüle edilmiş olsun olmasın, devletle uğraşmasını istemiyoruz.
Opak, değişmez vakaların burada teşvik edildiğini söylemek doğru olur mu? Yoksa basitçe cesareti kırılmış olan doğrudan devlet değişimleri midir? Bir varsa Örneğin, BankAccount
sınıf, 's Tamam olması GetBalance
, Deposit
ve Withdraw
, örnek yöntemler / mesajları; sadece bir SetBalance
örnek yöntem / mesaj olmadığından emin olun ?