Bosh sahifa Wiki Class

Class

Class — obyektga yo‘naltirilgan dasturlashda obyektlarning ma’lumot tuzilishi va xatti-harakatini belgilovchi tip yoki shablondir. Class field yoki property orqali holatni, method orqali operatsiyalarni ifodalaydi. Undan yaratilgan konkret qiymat instance deb ataladi. Har til class, object, visibility va inheritance semantikasini o‘z qoidalari bilan amalga oshiradi.

Holat va xatti-harakat

Class invariant obyekt public methodlar orasida saqlashi kerak bo‘lgan shartdir. Constructor valid boshlang‘ich holat yaratadi. Fieldlarni to‘g‘ridan-to‘g‘ri ochish o‘rniga method orqali o‘zgartirish invariantni markazlashtiradi. Masalan, balansni manfiy qilmaslik qoidasi barcha callerlar emas, obyektning o‘zida tekshiriladi.

Instance method yashirin yoki ochiq receiver orqali ayni obyekt holatiga ishlaydi. Static method class instance’iga bog‘lanmaydi. Class-level mutable state barcha instance orasida bo‘linadi va concurrency hamda test isolation muammosini keltirishi mumkin. Immutable class yaratilgach holatni o‘zgartirmaydi; yangi qiymat yangi instance sifatida qaytadi.

Encapsulation

Public interface consumer tayanishi mumkin bo‘lgan contractdir. Private implementatsiya versiyalar orasida erkinroq o‘zgaradi. Visibility keyword himoyaning yagona chegarasi emas; reflection yoki bir process ichidagi kod private fieldga yetishi mumkin. Encapsulation asosiy maqsadi dependency va invariantni boshqarishdir.

Getter va setter har fieldga avtomatik qo‘shilsa class faqat data containerga aylanadi. Domain class ma’noli operation beradi: approve(), reserve() yoki expire(). Data transfer object esa ataylab serialization uchun sodda fieldlardan iborat bo‘lishi mumkin. Ikki rol aralashtirilmaydi.

Inheritance va composition

Inheritance subclass’ni parent type o‘rnida ishlatish imkonini beradi. Override qilingan method parent contractini buzmasligi kerak. Chuqur hierarchy internal detailni avlodlarga bog‘lab, o‘zgarishni qiyinlashtiradi. Abstract class umumiy holat va qisman implementatsiya berishi mumkin.

Composition bir class ichida boshqa obyektlardan foydalanib xatti-harakatni birlashtiradi. Strategy yoki delegate runtime’da almashtirilishi oson va “is-a” aloqasi bo‘lmagan joyda inheritance’dan xavfsizroq. Interface contractni, class esa implementatsiyani beradi.

Runtime modeli

Managed runtime class metadata, method table va type informationni saqlaydi. Dynamic dispatch receiver’ning haqiqiy type’iga mos methodni tanlaydi. JIT monomorphic call’ni inline qilishi mumkin. Native til object layout va vtable ABIga ta’sir qiladi; public class layoutini o‘zgartirish binary compatibilityni buzishi mumkin.

Serialization classning barcha internal fieldlarini avtomatik tashqariga ochmasligi kerak. Explicit schema version va migration eski ma’lumotni yangi classga moslaydi. ORM proxy yoki lazy loading class xatti-harakatiga yashirin I/O qo‘shishi mumkin; transaction chegarasi va query soni kuzatiladi.

Generic va nested classlar

Generic class element type’ini parameter qilib, bir implementatsiyani type-safe qayta ishlatadi. Type erasure ishlatadigan runtime’da generic argument har doim runtime metadata’da mavjud bo‘lmasligi mumkin; serializer explicit type token talab qiladi. Covariance va contravariance collectionni qaysi yo‘nalishda almashtirish mumkinligini belgilaydi. Nested class tashqi class namespace’ida e’lon qilinadi. Inner instance tashqi obyektga yashirin reference saqlasa uning lifetime’ini uzaytirib memory leak yaratishi mumkin. Static nested variant bunday receiverga ega emas. Anonymous class qisqa implementation beradi, lekin stack trace va serializatsiyada barqaror nomga tayanish to‘g‘ri emas.

Class equality identity yoki field qiymatiga asoslanishi mumkin. Hash collection ishlatilsa equality bilan hash contracti mos bo‘ladi; mutable key map ichida o‘zgarmaydi.

Bog‘liq tushunchalar

Object, Instance, Encapsulation, Inheritance, Composition, Method, Abstract class