Sobes.tech
Junior

Genetiklər nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Proqramlaşdırmada generiklər, müxtəlif məlumat tipləri ilə işləyə bilən, lakin tip təhlükəsizliyini itirmədən təkrar istifadə oluna bilən komponentlər yaratmaq üçün vasitədir. Onlar siniflər, interfeyslər və metodlar yaza bilər ki, bunlar da tip parametrləri ilə işləyir.

Əsas üstünlüklər:

  • Kompilyasiya mərhələsində tip təhlükəsizliyi: Tip uyğunluğu ilə bağlı səhvlər proqram icrasından əvvəl aşkarlanır.
  • Kod təkrarlamasını azaldır: Fərqli tiplərlə işləyən ümumi algoritm və ya məlumat strukturu yaza bilərsiniz.
  • Performans: Object kimi ümumi tiplərin istifadəsindən fərqli olaraq, tip çevirmə (cast) lazım deyil, bu da performansı yaxşılaşdıra bilər.

Java nümunəsi:

// Jeneriksiz List sinfi (köhnə yanaşma)
List list = new ArrayList();
list.add("salam");
list.add(123); // Hər hansı tiplər əlavə oluna bilər
String s = (String) list.get(0); // Əl ilə tip çevirmə tələb olunur
Integer i = (Integer) list.get(1); // Əl ilə tip çevirmə tələb olunur

// Jenerik List sinfi
List<String> stringList = new ArrayList<>();
stringList.add("dünya");
// stringList.add(123); // Kompilyasiya xətası! Yalnız sətirlər icazə verilir

String s2 = stringList.get(0); // Tip çevirməyə ehtiyac yoxdur

Jeneriklər kolleksiya və ya digər ümumi sinif/interfeys ilə işləyəcək məlumat tipini müəyyən etməyə imkan verir. Bu, tip təhlükəsizliyini təmin edir və icra zamanı səhvləri qarşısını alır.

C# nümunəsi:

// Jeneriklərlə string listəsi
List<string> isimlər = new List<string>();
isimlər.Add("Alyus");
// isimlər.Add(123); // Kompilyasiya xətası

string ilkİsim = isimlər[0]; // Tip çevirməyə ehtiyac yoxdur

Python-da, generik anlayışı, tip göstəriciləri (type hints) və typing modulu istifadə edilərək həyata keçirilir:

from typing import List, Dict, Any

# Tip göstəricisi ilə string listəsi
def stringləriİşlə(datalar: List[str]):
    for item in datalar:
        print(item)

# Açarları sətir, dəyərləri isə hər hansı tip olan sözlük
def sözlükİşlə(datalar: Dict[str, Any]):
    for açar, dəyər in datalar.items():
        print(f"{açar}: {dəyər}")

Python-da tip göstəriciləri icra zamanı təhlükəsizlik təmin etmir (bu, statik analizatorlar, məsələn, MyPy tərəfindən həyata keçirilir), lakin kodun oxunaqlığını artırır və səhvlərin tapılmasını asanlaşdırır.

Ümumiyyətlə, generiklər, müxtəlif proqramlaşdırma dillərində elastik, təkrar istifadə oluna bilən və tip təhlükəsiz kodlar yaratmaq üçün güclü vasitədir.