Anlamanız gereken şey, iki tür nesne olmasıdır:
Davranışı olan nesneler . Bunlar, veri üyelerinin çoğuna / herhangi birine herkese açık erişim vermekten kaçınmalıdır. Bunlar için tanımlanan çok az sayıda erişimci yöntemi bekliyorum.
Örnek, derlenmiş bir normal ifade olabilir: Nesne, belirli bir davranış (bir dizeyi belirli bir normal ifadeyle eşleştirmek ve (kısmi) eşleşmeleri raporlamak için) sağlamak için oluşturulur, ancak nasıl derlenmiş normal ifadenin işini yaptığı kullanıcının hiçbiri değildir iş.
Yazdığım çoğu sınıf bu kategoridedir.
Gerçekten sadece veri olan nesneler . Bunlar tüm üyelerini herkese açık ilan etmelidir (veya onlar için tam erişimci setini sağlamalıdır).
Örnek olarak sınıf verilebilir Point2D
. Bu sınıfın üyeleri için kesinlikle sağlanması gereken bir değişmez yoktur ve kullanıcılar verilere sadece myPoint.x
ve üzerinden erişebilmelidir.myPoint.y
.
Şahsen, bu tür sınıfları fazla kullanmıyorum, ama sanırım bir yerde böyle bir sınıf kullanmayan daha büyük bir kod parçası yok.
Nesne yönelimi konusunda yetkin olmak, bu ayrımın var olduğunu fark etmeyi ve bir sınıfın işlevini bu iki kategoriden birine sınıflandırmayı öğrenmeyi içerir.
C ++ 'da kod yazarsanız, bu ayrımı class
nesnelerin ilk kategorisini ve struct
ikincisini kullanarak açık yapabilirsiniz . Tabii ki, ikisi eşdeğerdir, ancak bu class
, tüm üyelerin varsayılan olarak özel olduğu anlamına gelirken struct
, tüm üyeleri varsayılan olarak herkese açık olarak bildirir. Tam olarak iletişim kurmak istediğiniz bilgi türüdür.