Friday, November 29, 2024

Mobil Hafta 08 class

// METODLAR, Method, function

// çağrılmadığı sürece çalışmayan kod bloğudur.
// sürekli tekrar tekrar uzun kod yazmamak için
// düzen için
// metodlara istediğimiz adı verebiliriz.
// bir blokta aynı isimde bir metod olamaz (c# da böyle değil)

// tanımlanması
// DönüşTipi MetodAdı(){  
// }
import 'dart:math';

// void, boş, hiç anlamına geliyor,
// dönüştipi olarak yazarsak hiçbirşey döndürmez denir

void MerhabaYaz(){
  print("Merhaba");
}

// Parametre ile devam edelim.
// Parametre, metodun çağrılırken içerisine veri göndermemizi sağlar
void EkranaYaz(String yazi){
  print(yazi);
}

// Birden fazla parametre olabilir,
// parametreleri , ile ayırırız
void ToplamiYaz(int a, int b){
  int toplam = a + b;
  print("Toplam = $toplam");
}

// ToplamHesapla adında bir metod istese idik
// ne yapacaktı, toplamı hesaplayıp, sonucu çağrıldığı yere döndürmesi lazım
// dönüştipi void değilse, mutlaka return olmalıdır.
int ToplamHesapla(int a, int b){
  int toplam = a+b;
  return toplam; // geri döndür, değeri
  // Not: return görüldüğünde metoddan çıkılır.
}



void main(){
  MerhabaYaz(); // çağırmak için adını yazmak yeterlidir,
  // aslında zaten metod kullanmıştık
  // print("Ekrana bir şey yazdık."); // mesela bu voiddi, işi yapar çağrıldığoı yere döner
  // int sayi = Random().nextInt(10);  // bu ise çağrıldığı yere bir sayı döndürüyor.
  EkranaYaz("Recep ÖZEN");
  ToplamiYaz(5, 6);
  int sonuc = ToplamHesapla(5,6);
  print(sonuc);
}


// ZarAt adında bir metod tanımlayın.
// ve metodu kullanarak ürettiğiniz sayıyı ekrana yazın

import 'dart:math';

import 'p1101.dart';

int ZarAt(){
  int zar = Random().nextInt(6)+1;
  return zar;
}

void main(List<String> args) {
  print(zarAt());

  int sayi = zarAt();
  print(sayi);

}


// Zorunlu olmayan parametreler
// metoda bir parametre yazdığımızda, çağırırken mecburi parametre de yazılmalı

import 'dart:io';
import 'dart:math';

// void EkranaYaz(String yazi){
//   stdout.write(yazi);
// }
// // yukarıdaki metod, ekrana yazar alta geçmez


// void EkranaYaz(String yazi, bool yenisatir){
//   stdout.write(yazi);
//   if(yenisatir){
//     stdout.write("\n");
//   }
// }

// void main(List<String> args) {
//   EkranaYaz("Recep",false);
//   EkranaYaz("ÖZEN",false);
// }

// ************************************************
// zorunlu olmayan parametreler küme bloğu içerisinde tanımlanır
// öncelikle yazılması gerekenler, zorunlu olanlardır,
// yani küme bloğundaki parametreler, en sonda kullanılır.
// küme bloğunda tanımlanan parametrelerin, varsayılan değeri olmalıdır.
// void EkranaYaz(String yazi, {bool yenisatir=true}){
//   stdout.write(yazi);
//   if(yenisatir){
//     stdout.write("\n");
//   }
// }

// void main(List<String> args) {
//   EkranaYaz("Recep",yenisatir: false);
//   EkranaYaz("ÖZEN");
// }

// ***************************************************

// kendisine gönderilen listeyi küçükten büyüğe veya
// büyükten küçüğe sıralanmış olarak ekrana yazan metodu tanımlayınız.
// parametre olarak liste gönderilecek, aynı zamanda yon adında bir zorunlu olmayan
// parametre de küçükten büyüğe mi büyükten küçüğe mi sıralanacağını belirtsin
// varsayılan olarak küçükten büyüğe sıralama yapılacaktır.

void Sirala(List<int> a, {bool yon = true}){
  List<int> yeni = a.toList();
  yeni.sort();
  if(yon) print(yeni);
  else print(yeni.reversed);
}

void Metod(int a, int b, int c){

}

void main(List<String> args) {
  List<int> liste = [3,56,7,23,8,1,9];
  Sirala(liste,yon: false);

  Sirala(liste);
  print(liste);

}



// KisiYarat adında gönderilen bilgiler ile kişi oluşturan
// metod yazıp, kişi yaratın
// Adı, Soyadı, TCNo, doğumyılı, Cinsiyet, Telefon, Email

// kişi yaratıldığını simüle etmek için bilgileri ekrana yazsın

// aşağıdaki yazımda bu bilgiler parametre olarak kesinlikle girilmeli, yoksa metodu çağıramayız
// void KisiYarat(String Ad, String Soyad, String TCNO, int dy, String Cinsiyet, String Telefon, String Email){

// }

// Cinsiyet, Telefon ve email bilgisi zorunlu olmasın.
void KisiYarat(String Ad, String Soyad, String TCNO, int dy, {String? Cinsiyet, String? Telefon, String? Email}){
  print("Ad: $Ad");
  print("Soyad: $Soyad");
  print("TCNo: $TCNO");
  print("Doğum Yılı: $dy");
  if(Cinsiyet!=null) print("Cinsiyet: $Cinsiyet");
 if(Telefon!=null) print("Telefon: $Telefon");
  if(Email!=null) print("Email: $Email");
}


void main(List<String> args) {
  KisiYarat("Recep", "ÖZEN", "52753025212", 1980);

  KisiYarat("Recep", "ÖZEN", "52753025212", 1980, Cinsiyet: "Erkek",Email: "recepozen54@gmail.com");
}



// KisiYarat metodu olsun yine, ad soyad cinsiyet ve medenihali göndereceğiz.

// void KisiYarat(String ad, String soyad, String cinsiyet, String medeniHali) {

// }


// enumaration, numaralandırma
enum Cinsiyet{
  Erkek,
  Kadin
}

enum MedeniHal{
  Bekar,
  Evli,
  Dul,
  AyriYasiyor,
  Bosanmis
}

void KisiYarat(String ad, String soyad, Cinsiyet cinsiyet, MedeniHal medeniHali) {
print(ad);
print(soyad);

if(cinsiyet==Cinsiyet.Erkek) print("ERKEK");
if(cinsiyet==Cinsiyet.Kadin) print("KADIN");

switch (medeniHali) {
  case MedeniHal.AyriYasiyor:
    print("Ayrı Yaşıyor");
    break;
    case MedeniHal.Evli:
    print("evli");
    break;
    case MedeniHal.Bekar:
    print("Bekar");
    break;
    case MedeniHal.Dul:
    print("Dul");
    break;
    case MedeniHal.Bosanmis:
    print("Boşanmış");
    break;
  default:
}
}


void main(List<String> args) {

  KisiYarat("Recep", "ÖZEN", Cinsiyet.Erkek,MedeniHal.Evli);
  KisiYarat("Yağmur", "Tatlısu", Cinsiyet.Kadin, MedeniHal.Bekar);

}


void main(List<String> args) {
  // constant - Sabit
  const pi = 3.14;

  // const ile tanımlanan değişken sadece bir defa atanabilir.
  // const a; bu hata verir
  // const ile tanımlanan sabit değişken, tanımlandığı anda değer ataması yapılmalıdır.

  final pi2 = 3.14;
  //pi2 = 4; // burada hata alınır
  // const ve final ikisi de sabit değişkenlerdir.

  // const atanırken değer tanımlanmalı idi
  // final ise tanımlandığı anda değer ataması yapılmak zorunda değildir
  // ataması yapıldıktan sonra bir daha atama yapılamaz, değeri değiştirilemez
  final pi3;
  pi3=3.14; // atama sonra da yapılabilir.
  // pi3=3; // burada hata alırız


  // final veya const ile tanımlanan değişkenler, var gibi davranır.
  // yani ilk atamadaki değerin türünü alır.
}




// Class nedir? Sınıftır.
// sınıf nedir? kültürel anlamda sormuyoruz, programlamada

// Class yapıdır, Class fıtrattır, Class plandır
// planların özellikleri vardır
// örneğin bina planının kat adedi, daire adedi, rengi, vb
// insan fıtratının, cinsiyeti, kangrubu, kanrengi, tenrengi vb.

// Nesne yönelimli programlama, Nesne tabanlı programlama
// her nesnenin bir fıtratı vardır, planı vardır,
// yani özelliklerini ve yeteneklerini belirten unsurları vardır.

// bir class nasıl tanımlanır

// class ClassAdi{

// }

// kedi fıtratı yazıyoruz.
class Kedi{
  // Özellikleri (Property), değişkenler olarak ifade edebiliriz.
  // String Renk; // Bu şekilde yazdığımızda hata alırız.
  // sebebi diyor ki nesne türetilir ise bu plandan, yani gerçek bir kedi
  // üretilirse rengi yok. yani varsayılan rengi yok diyor.
  // ya bir kedi üretildiğinde varsayılan rengi olmalı
  // String Renk = "Sarı";

  // ya bir kedi üretildiğinde varsayılan olarak null olsun
  // String? Renk; // tabii ki kullanacağımız zaman null ise ne yapacağını söylememiz lazım.

  // late String Renk; // bu ifade sonra anlamında kullanılabilir
  // diyoruz ki programa, bu Renk değeri null olmayacak, ama ben değeri
  // daha sonra atacağım, hata olabileceğinin farkındayım.

  // değişkenlere classlarda Field adı da verilir.
  String? renk;
  int? yas;
  int? patiSayisi;
  String? gozrengi;
  bool? tuylu;

  // Yetenekleri (Method), metodlar olarak ifade edebiliriz.

  void Miyav() {
    print("Miyav miyav");
  }

  void Yuru(){
    print("Yurudum, $yas yaşındayım, yoruldum");
  }
}


void main(List<String> args) {
  // Bir kedi yaratalım
  // kedi sınıfından bir nesne üreteceğiz.
  Kedi k1 = new Kedi();
  k1.gozrengi = "Ela";
  k1.patiSayisi = 5;
  k1.tuylu = false;
  k1.renk = "Turuncu";
  k1.yas = 5;

  k1.Miyav();
  k1.Yuru();

  var k2 = new Kedi();
  k2.yas = 10;

  k1.Yuru();
  k2.Yuru();
}



// Kişinin bilgilerini tutan Person adında bir sınıf tanımlayın

// Ad, Soyad, Maas bilgilerini tutsun


// Klavyeden bu gerekli bilgileri giriş alan
// kişi oluşturarak sonra bu kişiyi ekrana yazan programı yazınız.

import 'dart:io';

class Person{
  String? ad;
  String? soyad;
  double? maas;
}

void main(List<String> args) {
  stdout.write("Ad giriniz: ");
  String ad = stdin.readLineSync()!;

  stdout.write("Ad giriniz: ");
  String soyad = stdin.readLineSync()!;
 
  stdout.write("Ad giriniz: ");
  double maas = double.parse(stdin.readLineSync()!);

  Person kisi = new Person();
  kisi.ad =ad;
  kisi.soyad=soyad;
  kisi.maas = maas;
 
  print("Kişi Adı: ${kisi.ad}");
  print("Kişi soyadı: ${kisi.soyad}");
  print("Kişi maası: ${kisi.maas}");


  Person kisi2 = Person(); // new yazılmasa da yazılmış gibi nesne türetilir.
  // ClassAdı() yaptığımızda new ClassAdı() yapmış oluruz.
 
  stdout.write("Ad giriniz: ");
  kisi2.ad = stdin.readLineSync()!;

  stdout.write("Ad giriniz: ");
  kisi2.soyad = stdin.readLineSync()!;
 
  stdout.write("Ad giriniz: ");
  kisi2.maas = double.parse(stdin.readLineSync()!);

 
  print("Kişi Adı: ${kisi2.ad}");
  print("Kişi soyadı: ${kisi2.soyad}");
  print("Kişi maası: ${kisi2.maas}");
}

















 

No comments: