Hiç Smalltalk kullanmamıştım, ancak bu konuda çok şey okudum ve her zaman beni şaşırttı. Bir programın çalıştığı ve sadece programın nesnelerinin kullandığı sınıfların yöntemlerini değiştirerek çalışan programın davranışını değiştiren havalı demoları gördüm. Açıkça güçlü şeyler ve bunun nasıl çalıştığını anlıyorum. Kesin olarak görünmemesi gereken şey, bu sınıfın örnek değişkenlerini eklemek, kaldırmak veya yeniden adlandırmak istediğinizde, bir sınıfın varolan örneklerine ne olduğudur.Smalltalk sınıfının örnek değişkenlerini yeniden tanımlama
Tüm sınıfların çalışan bir programda kullandığı örnek değişkenleri nasıl değiştirebileceğini ve bu sınıfın varolan örneklerinin daha sonra düzgün çalışmasını beklemeyi hayal edemiyorum. Belki de ilklendirmem gereken ve daha önce varolan yöntemlerin bu değişkene bağlı olarak değiştirildiği yeni bir değişken ekliyorum. O sınıfın canlı örneklerine sahip herhangi bir çalışan kodun korkunç bir bozukluğuyla sonuçlanamaz mıyım? Ya da bir örnek değişkenin anlamı değiştiyse ve şimdi daha önceden var olandan farklı bir nesnenin varlığını beklersek ne olur? Bir çeşit "yükseltme" mekanizması var mı? Ya da önceki örneklerin çökmesine ve yanmasına izin vermek için alışılmış pratik mi? Yoksa bu sadece "program yürütme konusunda böyle bir şey yapmayız ve hayatta kalmalarını beklemez miyiz?"
Düşünebildiğim tek mantıklı temiz yaklaşım, örnek değişken tanımlarını değiştirdiğinizde belki de tamamen yeni bir sınıf oluşturduğudur ve değişiklikten önce eski örneklerin eski sınıf tanımıyla düzgün çalışmaya devam etmesidir. (Bu, adı yeni sınıf tanımına yeniden tanımlandığından beri isim ile erişilemez). Belki de bu en mantıklı açıklamadır - ama bu süreci doğrudan açıklayan bir şey bulamadığım için, burada sormam ve bana ne tür eğlenceli bilgiler verdiğimi anladım. :) Dediğin gibi
Awesome! Bu bağlantı için teşekkürler. Google'lılarımın bu cevabı bulmak için neden yeterince güçlü olmadığını anlamıyorum. Bu soruyu göndermeden önce bir süre denedim! Önemli bir anahtar kelimeyi kaçırmış olmalıyım. : P – Sean