2-modul · 9-dars: Type inference · Enum · Design Patterns
Daraja: O'rta
Type inference · Enum · Design Patterns. OOP bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Type inference · Enum · Design Patterns tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Kompilyatorning o'zgaruvchi turini o'zi aniqlashi (`var`, diamond `<>`, lambda).
Local o'zgaruvchini initsializatsiya bilan e'lon qilganda ishlatamiz. Field, method parametri, return type yoki initsializatsiyasiz e'londa ishlatib bo'lmaydi.
## Intervyuga tayyorgarlik ### Type inference nima? Kompilyatorning o'zgaruvchi turini o'zi aniqlashi (`var`, diamond `<>`, lambda).
### var keywordni qachon ishlata olamiz, qachon olmaymiz? Local o'zgaruvchini initsializatsiya bilan e'lon qilganda ishlatamiz. Field, method parametri, return type yoki initsializatsiyasiz e'londa ishlatib bo'lmaydi.
### Enum classlar qanday classlar? Cheklangan, doimiy qiymatlar to'plamini ifodalovchi maxsus class lar.
### Enum classidan obyekt yaratib bo'ladimi? Yo'q. Tashqaridan `new` bilan yaratilmaydi — qiymatlar oldindan belgilangan.
### Enum classining afzalliklari? Type xavfsizligi, o'qishga oson, `switch` da ishlaydi, method va field qo'shsa bo'ladi.
### Enum classlari interfacelardan voris ololadimi? Ha, enum interface-ni `implements` qila oladi. Lekin class-ni `extends` qila olmaydi (u allaqachon `Enum` dan meros olgan).
### Enumda constructor yarata olamizmi? Ha, lekin faqat `private` (yoki package-private) — tashqaridan chaqirilmaydi.
### Design Patterns nima? Tez-tez uchraydigan dizayn muammolariga sinovdan o'tgan yechim shablonlari.
### Design Patterns qanday turlarga bo'linadi? Creational, Structural va Behavioral.
### Creational Design Patterns nimaga yordam beradi? Obyekt yaratish mexanizmlarini moslashuvchan qilishga (Singleton, Factory, Builder...).
### Singleton nima? Class dan faqat bitta nusxa (instance) bo'lishini ta'minlovchi pattern.
### Factory method nima? Obyekt yaratishni method/subclass ga topshirib, aniq turini yashiruvchi pattern.
### Builder nima? Murakkab obyektni bosqichma-bosqich, o'qishga oson tarzda quruvchi pattern.
### Sinf yaratayotganda nimalarga e'tibor berish kerak? Ma'lumotni private saqlash, to'g'ri initsializatsiya, kam va aniq methodlar, yagona mas'uliyat (SRP), imkon bo'lsa immutability va mantiqiy nomlash.
### JShell nima? Java 9 dagi REPL — Java kodini tez sinab ko'rish uchun interaktiv qobiq.
## Versiya va aniqlik Java misollari Java 17 bazasiga mo‘ljallangan. JDK/JRE paketlash usuli distributivga bog‘liq; JVM bayt-kodni interpretatsiya va JIT orqali bajarishi mumkin. GC uchun aniq bajarilish vaqtiga kafolat yo‘q; finalization resurs yopish usuli emas. Thread stop/suspend/resume kabi eski metodlar amaliy yechim emas. Koddagi import, klass yoki tashqi kutubxona kontekstini tekshiring.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/2-module.md) [Rasmiy qo‘llanma](https://dev.java/learn/classes-objects/) [Sizning avvalgi savol-javob arxivingiz](https://lightyer.uz/java/interview.html)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
enum Status { NEW, LEARNED, REVIEW }
var status = Status.REVIEW;
String label = switch (status) {
case NEW -> "Yangi";
case LEARNED -> "O'rganildi";
case REVIEW -> "Takrorlash";
};
Keng tarqalgan xatolar
- `var` ni hamma joyda ishlatish: tur ko'rinmay qolsa kod o'qishga qiyinlashadi.
- Enum nusxalarini `equals` bilan solishtirish - `==` ham xavfsiz va tezroq.
Mashqlar
- Uchta maydonli va constructor li enum yozing (masalan hafta kunlari va ish soatlari).
- `var` ishlatilgan uchta qatordan qaysi biri o'qishni qiyinlashtirganini ayting.
Teglar: pdp, nazariya, modul-02