Wednesday, December 4, 2024

Mobil Hafta 09 Class devam, constructor

 // class , yapı, fıtrat, plan


// Bir kişi bilgisi tutacağız diyelim
// bilgiler ne olacak ise, yani özellikleri ne olacak ise onlar kullanılır

// class ClassAdi{

// }

// Klavyeden 3 notu girilen öğrencinin ortalamasını ekrana yazan program
// yazmıştık.

// 3 öğrenci için okulno, ad, soyad, not1,not2, not3 bilgilerini girilmesini
// bu bilgilerin tutulmasını
// son olarak, aşağıdaki gibi görüntülemesini sağlayan programı yazalım

/*
Recep ÖZEN - ort: 45
Canan ÖZEN - ort: 17
Mehmet BİLİR - ort: 90
 */

import 'dart:io';

class Ogrenci {
  String? okulNo;
  String? ad;
  String? soyad;
  int? not1;
  int? not2;
  int? not3;
}

void main(List<String> args) {
  List<Ogrenci> ogrenciler = [];

  // listeye öğrencileri bilgileri ile ekliyoruz.
  for (var i = 0; i < 3; i++) {
    Ogrenci ogr = Ogrenci(); // new Ogrenci(); ile aynı
    stdout.write("${i + 1}. öğrenci için Okul No:");
    ogr.okulNo = stdin.readLineSync();

    stdout.write("${i + 1}. öğrenci için Ad:");
    ogr.ad = stdin.readLineSync();

    stdout.write("${i + 1}. öğrenci için Soyad:");
    ogr.soyad = stdin.readLineSync();

    stdout.write("${i + 1}. öğrenci için Not1:");
    ogr.not1 = int.parse(stdin.readLineSync()!);

    stdout.write("${i + 1}. öğrenci için Not2:");
    ogr.not2 =int.parse(stdin.readLineSync()!);

     stdout.write("${i + 1}. öğrenci için Not3:");
    ogr.not3 = int.parse(stdin.readLineSync()!);

    ogrenciler.add(ogr);
  }

  for (var i = 0; i < ogrenciler.length; i++) {
    var o = ogrenciler[i];

    double ort = (o.not1!+o.not2!+o.not3!)/3;

    print("${o.ad} ${o.soyad} - ort: $ort");
  }
}



// Klavyeden 4 kişi için Ad, Soyad, doğum yılı bilgileri giriliyor
// bu kişileri alt alta
// ad soyad yaş
// şeklinde listelen program

import 'dart:io';

class Kisi{
  String? ad;
  String? soyad;
  int? dogumYili;

 
  int yasVer(){
    int yas = 2024 - this.dogumYili!;
    return yas;
  }
}

void main(List<String> args) {
  List<Kisi> kisiler = [];

  for (var i = 0; i < 4; i++) {
    Kisi yenikisi = Kisi();
   
    stdout.write("Ad Girin: ");
    yenikisi.ad = stdin.readLineSync();
    stdout.write("Soyad Girin: ");
    yenikisi.soyad = stdin.readLineSync();
    stdout.write("Doğum yılı girin: ");
    yenikisi.dogumYili = int.parse(stdin.readLineSync()!);

    kisiler.add(yenikisi);
  }

  // for (var i = 0; i < kisiler.length; i++) {
  //   Kisi a = kisiler[i];
  //   int yas = 2024 - a.dogumYili!;

  //   print("${a.ad} ${a.soyad} $yas");
  // }

  for (var a in kisiler) {
    int yas = 2024 - a.dogumYili!;

   print("${a.ad} ${a.soyad} ${a.yasVer()}");
  }

}


// class larda metodlar

// classlardaki metotlar, onların yetenekleri gibiydi
// öncelikle metod ne idi, onu hatırlayalım
// çağrıldığında iş yapan kodlar, geriye birşey döndürür veya döndürmez

import 'dart:io';

class Kisi{
  String? ad;
  String? soyad;
  int? dogumYili;

  int yasVer(){
    int yas = 2024 - this.dogumYili!;
    return yas;
  }

  void bilgileriYaz(){
    stdout.write("$ad $soyad ${yasVer()}");
  }
}


// constructor metodu, yapıcı metodlar

// classlarda kullanılan özel bir metoddur.

// normalde metodların dönüş tipi olur idi

// constructor da ise dönüştipi yoktur.

// constructor metodun adı class ile aynı isimdedir.

// bir classtan nesne yaratıldığında çalışır. yaratılırken


class Personel{
  String? name;
  String? surname;
  int? maas;

  // constructor
  // Personel(){
  //   print("Yeni bir kişi oluşturuldu");
  // }
  // yukarıdaki kullanımda, parametre almadı, oluşturulurken bunun bilgisine verecek

  // parametrelerin isimlerini ayrı ayrı yazmak yerine classtan çekebiliriz.
  // Personel(this.name, this.surname, this.maas);
  // bu kullanımda farketti iseniz küme bloğu açmanıza gerek yok
  // zaten atama yapmıyoruz.

// aşağıdaki constructorda parametreler zorunludur.
  // Personel(String ad, String soyad, int maas){
  //     this.name = ad; //ad.toUpperCase();
  //     surname = soyad;
  //     this.maas = maas;
  //     // bu kullanım niye gerekebilir.
  //     // değer ataması yapılırken belirli kriterlerini var ise
  //     // mesela ad küçükte büyükte girilse, atama yapılırken büyük yapılabilir.
  // }


  Personel({this.name, this.surname, this.maas});

}

void main(List<String> args) {
  // normalde bir classtan nesne türettikten sonra
  // o nesnenin özelliklerini değiştirebiliyoruz.

  // Personel yeni = new Personel();
  // yeni.name = "Recep";
  // yeni.surname = "ÖZEN";
  // yeni.maas = 53500;

  // yeni üretilen bir nesnenin özelliklerini bu şekilde girmek biraz zahmetlidir.

  // Personel yeni = new Personel("Recep","ÖZEN",3000);
  // Personel a = Personel("Ali", "Tunç", 45000);
  // print(yeni.surname);

  Personel a = Personel();
  Personel b = Personel(name: "Recep", maas: 58000);
}



// Ad, Soyad, doğum yılı bilgilerini tutan
// 4 kişi kaydı oluşturarak bir listeye ekleyin.
// ad soyad yaş
// şeklinde listeleyen program

class Kisi{
  String? ad;
  String? soyad;
  int? dogumYili;

  Kisi(this.ad, this.soyad, this.dogumYili);

  int yasver(){
    return 2024-this.dogumYili!;
  }
}


void main(List<String> args) {

  List<Kisi> liste = [
    Kisi("Recep", "ÖZEN", 1980),
    Kisi("Ali", "Tuna", 1987),
    Kisi("Arda", "TURAN", 2005),
    Kisi("Yasemin", "ABLA", 2009)
  ];

  for (var k in liste) {
    print("${k.ad} ${k.soyad} ${k.yasver()}");
  }

  // for (var i = 0; i < liste.length; i++) {
  //   var k = liste[i];
  //   print("${k.ad} ${k.soyad} ${k.yasver()}");
  // }
}


// Şu ana kadar ne yaptık
// classın değişkenlerini hep null olabilen yaptık

// çünkü nesne üretildiğinde değer atanmış olmasını istiyordu

// artık biz constructor biliyoruz, yani
// nesne üretilirken değer atabilirim.

class Kisi{
  String ad;
  String soyad;

  Kisi(this.ad, this.soyad);
}

// yukarıdaki kullanımda
// constructorda üretildiği anda değerler zorunlu olarak
// atandığı için null olmayan değişken hata vermeyecektir.

void main(List<String> args) {
  Kisi a = Kisi("Recep", "ÖZEN");
}




class Kisi{
  String ad;
  String soyad;

// eğer null olmayan özelliğimizi zorunlu olmayan parametre olarak alırsak
//hata verecektir.
  Kisi(this.ad, {this.soyad = ""});
  // bunun çözümü maalesef sadece varsayılan bir değer atmak olur.
}

// yukarıdaki kullanımda
// constructorda üretildiği anda değerler zorunlu olarak
// atandığı için null olmayan değişken hata vermeyecektir.

void main(List<String> args) {
  Kisi a = Kisi("Recep", soyad: "ÖZEN");
  Kisi b = Kisi("Ahmet");
}



class Kisi{
  String ad;
  late String soyad;

  Kisi(this.ad);
  // eğer null olamayan bir değişkeni constructorda da değer atamaz isek
  // late diyebiliriz.
  // kardeşim biliyorum, bu null olmayacak, daha sonra ben değer atayacam
}

// yukarıdaki kullanımda
// constructorda üretildiği anda değerler zorunlu olarak
// atandığı için null olmayan değişken hata vermeyecektir.

void main(List<String> args) {
  Kisi a = Kisi("Recep");
  a.soyad = "ÖZEN";

  Kisi b = Kisi("Ahmet");
  print(b.soyad); // late ten ötürü hata vermez
  // değer atamadan kullanmaya kalkarsam çalışma sırasında hata oluşur
}


// Kitap bilgileri
// adı, yazarı, türü, Fiyatı
// classın değişkenleri null olamaz.
// 5 adet kitap sahip bir dukkanımız var.

// program çalıştırıldığında kitapların bilgilerini alta alta listeliyor
/*
1. KitapAdı  YazarAdı  Türü  Fiyatı
2. KitapAdı  YazarAdı  Türü  Fiyatı
3. Prens  YazarAdı  Türü  200
4. KitapAdı  YazarAdı  Türü  Fiyatı
5. KitapAdı  YazarAdı  Türü  Fiyatı

Hangi kitabı almak istiyorsunuz?: _3
Kaç tane almak istiyorsunuz?: 2

Satın alınan Prens kitabı, ödenecek tutar 400 TL
 */

import 'dart:io';

class Kitap{
  String adi;
  String yazar;
  String tur;
  double fiyat;

  Kitap(this.adi, this.yazar, this.tur, this.fiyat);

  String yaziHali(){
    return "$adi $yazar $tur $fiyat";
  }
}
void main(List<String> args) {
  List<Kitap> dukkan =[
    Kitap("Küçük Prens", "Ali", "macera", 450),
    Kitap("Maymun", "Cehennem", "roman", 100),
    Kitap("Ayşe suçu ne", "recep", "roman", 4500),
    Kitap("Aylin", "george orwell", "bilimsel", 5000)
  ];

  for (var i = 0; i < dukkan.length; i++) {
    var kitap = dukkan[i];
    print("${i+1}. ${kitap.yaziHali()}");
  }

   stdout.write("Hangi kitabı almak istiyorsunuz?:");
   int index = int.parse(stdin.readLineSync()!)-1;

   stdout.write("Kaç tane almak istiyorsunuz?:");
   int adet = int.parse(stdin.readLineSync()!);
   
   var kitap = dukkan[index];

   print("Satın alınan ${kitap.adi} kitabı, ödenecek tutar ${kitap.fiyat*adet} TL");
}



No comments: