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

Mashqlar

Teglar: pdp, nazariya, modul-02

Interaktiv ko'rinish (viktorina, izohlar, tarix)