Sınıflar

Yeni nesneler oluşturmak, nesneleri ve fonksiyonları sınıflandırmak ve kodların tekrardan kullanılabilirliğini sağlamak için kullanılır. Oluşturduğunuz A dosyasında sınıf yapısı oluşturmadıysanız "genel" erişim türünde otomatik olarak oluşturulur.

Sınıf Oluşturma: <erişimTürü> sınıf <SınıfAdı>{<kodlar>}

Nesne Oluşturma: <erişimTürü> SınıfAdı nesneAdı=yeni SınıfAdı();

Örnek:

Temsili kullanıcı yönetim paneli yapalım. YönetimPaneli.a dosyasını oluşturalım.

YönetimPaneli.a

sınıf YönetimPaneli{

fonk _ekle(Metin kullanıcıAdı){

yazdır("Kullanıcı Eklendi: {kullanıcıAdı}");

}


fonk _sil(Metin kullanıcıAdı){

yazdır("Kullanıcı Silindi: {kullanıcıAdı}");

}

fonk _listele(){

yazdır("Kullanıcı Listesi");

}

}

AnaSınıf.a

anafonk(){

YönetimPaneli yönetim=yeni YönetimPaneli();

//"yönetim" adında "YönetimPaneli" nesnesi oluşturduk.

yönetim._ekle("HAK");

yönetim._sil("HAK");

yönetim._listele();

//Yönetim nesnesinin fonksiyonlarını kullandık.

}

Çıktı:

Kullanıcı Eklendi: HAK

Kullanıcı Silindi: HAK

Kullanıcı Listesi

Erişim Türleri

4 tane erişim türü vardır. Sınıflarda "genel" yada "varsayılan" kullanılır.

genel

Tüm sınıflar tarafından erişilebilir.

Örnek:

genel sınıf Örnek{

genel Metin mesaj="Merhaba";

}

korumalı

Oluşturulduğu sınıfta, klasörde ve oluşturulduğu sınıfı miras alan sınıflarda erişilebilir.

Örnek:

korumalı Sayı=10.5;

varsayılan

Oluşturulduğu sınıfta ve klasörde erişilebilir.

Örnek:

sınıf Örnek{

Metin mesaj="Merhaba";

}

özel

Sadece oluşturulduğu sınıfta erişilebilir.

Örnek:

özel Sayı=10.5;

Statik ve Sabit

"statik" ifadesini fonksiyonlar bölümünde görmüştük. "statik" nesneler ve fonksiyonlar bellekte tek yer tutarlar. Yani bulunduğu sınıf yeniden oluşturulmadan kullanılır. "statik" nesneye değer verildiğinde değer değiştirilmezse program bitene kadar aynı kalır.

"sabit" nesneler ve fonksiyonlara 1 kere yazılır. Yani daha sonradan değiştirilemez.

Örnek:

Mesaj sınıfı yapalım. Mesaj.a dosyasını oluşturalım.

Mesaj.a

genel statik sabit Metin sabitMesaj="İYİ GÜNLER";

genel statik Metin mesaj="HOŞGELDİNİZ";

genel statik fonk mesajVer() yazdır(mesaj);

AnaSınıf.a

anafonk(){

Mesaj.mesajVer();

Mesaj.mesaj="YENİ MESAJ";

Mesaj.mesajVer();

yazdır(Mesaj.sabitMesaj);

Mesaj.sabitMesaj="GÜNAYDIN"; //Hata

}

Çıktı:

HOŞGELDİNİZ

YENİ MESAJ

İYİ GÜNLER

Başlatıcı

Sınıftan nesne oluşturulduğunda ilk çalışan fonksiyondur.

Örnek:

Öğrenci sınıfı yapalım. Öğrenci.a dosyasını oluşturalım.

Öğrenci.a

genel Metin adı;

genel Metin soyadı;

genel Tam sınıfı;

genel Metin şubesi;

genel Tam numarası;

başlatıcı(Metin adı, Metin soyadı, Tam sınıfı, Metin şubesi, Tam numarası){

bu.adı=adı;

bu.soyadı=soyadı;

bu.sınıfı=sınıfı;

bu.şubesi=şubesi;

bu.numarası=numarası;

//"bu" ifadesi sınıfın nesnesi olduğunu belirtir.

//başlatıcı ve sınıfın nesneleri aynı olduğu için "bu" ifadesini kullandık.

}

AnaSınıf.a

anafonk(){

Öğrenci ahmet=yeni Öğrenci("Ahmet","AB",10,"B"m,600);

Öğrenci mehmet=yeni Öğrenci("Mehmet","BE",12,"D"m,300);


yazdır("{ahmet.sınıfı}/{ahmet.şubesi}");

yazdır("{mehmet.sınıfı}/{mehmet.şubesi}");

}

Çıktı:

10/B

12/D

Paket

Sınıflarımızı klasörlere ayırdığımızda paketler oluşur. Paketler 2 şekilde kullanılır. "kullan" ifadesini kullanmak için sınıf yapısı oluşturulmalıdır.

Örnek:

"Matematik" adında klasör oluşturalım ve içine "Dörtİşlem.a" dosyasını oluşturalım.

Dörtİşlem.a

Sayı sayı1;

Sayı sayı2;

başlatıcı(Sayı sayı1, Sayı sayı2){

bu.sayı1=sayı1;

bu.sayı2=sayı2;

}

genel fonk topla() yazdır(sayı1+sayı2);

genel fonk çıkart() yazdır(sayı1-sayı2);

genel fonk çarp() yazdır(sayı1*sayı2);

genel fonk böl() yazdır(sayı1/sayı2);

"Matematik" adında paket oluşturduk. Paketimizi 2 şekilde de kullanalım.

  1. Kullanım: KlasörAdı.KlasörAdı.SınıfAdı

AnaSınıf.a

anafonk(){

Matematik.Dörtİşlem işlem=yeni Matematik.Dörtİşlem(10,5);

işlem.topla();

işlem.çıkart();

işlem.çarp();

işlem.böl();

}

  1. Kullanım: kullan KlasörAdı.KlasörAdı.*; | SınıfAdı

AnaSınıf.a

kullan Matematik.*;

sınıf AnaSınıf{

anafonk(){

Dörtİşlem işlem=yeni Dörtİşlem(10,5);

işlem.topla();

işlem.çıkart();

işlem.çarp();

işlem.böl();

}

}

Çıktı:

15.0

5.0

50.0

2.0

Miras

Bir sınıfta yazılmış nesneleri ve fonksiyonları başka sınıfta tekrar oluşturmadan kullanmak için ilk sınıftan miras alınır. Sınıf yapısı oluşturulmalıdır. "anabaşlatıcı" fonksiyonu miras alınan sınıfın "başlatıcı" fonksiyonunu çalıştırır. "üzerine" ifadesi ile miras alınan sınıfın belirtilen fonksiyonu geçersiz kılınır ve yerine belirtilen fonksiyon geçerli olur.

Kullanımı: sınıf Sınıf2 miras Sınıf1{<kodlar>}

Örnek:

Ürün, Bilgisayar ve Kıyafet sınıflarını oluşturalım. Bilgisayar ve Kıyafet sınıfları Ürün sınıfını miras alsın. Kıyafet sınıfında Ürün sınıfına ek olarak "renk" nesnesi olduğundan "bilgi" fonksiyonunun üzerine yeni bilgi fonksiyonu yazıyoruz.

Ürün.a

genel Metin adı;

genel Sayı fiyatı;

başlatıcı(Metin adı, Sayı fiyatı){

bu.adı=adı;

bu.fiyatı=fiyatı;

}

genel fonk bilgi() yazdır("Adı: {adı}, Fiyatı: {fiyatı}");

Bilgisayar.a

sınıf Bilgisayar miras Ürün{

genel Metin tür="Bilgisayar";

başlatıcı(Metin adı, Sayı fiyatı) anabaşlatıcı(adı, fiyatı);

}

Kıyafet.a

sınıf Kıyafet miras Ürün{

genel Metin tür="Kıyafet";

Metin rengi;

başlatıcı(Metin adı, Metin rengi, Sayı fiyatı){

anabaşlatıcı(adı, fiyatı);

bu.rengi=rengi;

}


üzerine fonk bilgi()

yazdır("Adı: {adı}, Rengi: {rengi}, Fiyatı: {fiyatı}");

}

AnaSınıf.a

anafonk(){

Bilgisayar bilgisayar=yeni Bilgisayar("Dizüstü", 3000);

Kıyafet kıyafet=yeni Kıyafet("Kazak", "Mavi", 100);


yazdır(bilgisayar.tür);

bilgisayar.bilgi();

yazdır(kıyafet.tür);

kıyafet.bilgi();

}

Çıktı:

Bilgisayar

Adı: Dizüstü, Fiyatı: 3000.0

Kıyafet

Adı: Kazak, Rengi: Mavi, Fiyatı: 100.0