# Methods

```aspnet
class Person{
    public string Ad { get; set; }
    public string Dogum { get; set; }
    
    public void Yazdir(){
        Console.WriteLine($"Adı: {this.Name} / Yaşı: {this.YasHesapla}");
    }
    
    public int YasHesapla(){
        return DateTime.Now.Year - this.Year;
    }
}

// void Main fonksiyonu içerisinde 

var p1 = new Person() {Ad="Ahmet", Dogum=1993};
p1.Yazdir();

// Çıktısı -> Adı: Ahmet / Yaşı: 27
```

## Yukarıda öğrendiğimiz bilgilerle bir uygulama yapalım

```aspnet
/*
Araba isminde bir sınıf oluşturun.
Propertyler -> Marka, Model, Renk, Otomatik
Method lar -> Stop, Start, Slow, Fast
Kullanıcının seçimine göre bir method çalışacak
*/

class Araba{
        public string Marka { get; set; }
        public string Model { get; set; }
        public string Renk { get; set; }
        public bool Otomatik { get; set; }

        public void Start(){
            Console.WriteLine(this.Marka + " Çalıştı");
        }
        public void Stop(){
            Console.WriteLine(this.Marka + " Durdu");
        }
        public void Slow(){
            Console.WriteLine(this.Marka + " Yavaşlıyor");
        }
        public void Fast(){
            Console.WriteLine(this.Marka + " Hızlanıyor");
        }

        public void Menu(){
            string komut;

            do{
            Console.WriteLine("1-Start / 2-Stop / 3-Slow / 4-Fast / Ç-Çıkış");
            Console.Write("Seçiminiz-> "); 
            komut = Console.ReadLine();

            switch(komut){
                case "1":
                this.Start();
                break;

                case "2":
                this.Stop();
                break;

                case "3":
                this.Slow();
                break;

                case "4":
                this.Fast();
                break;

                default:
                Console.WriteLine("Yanlış Seçim");
                break;
            }
            }
            while(komut!="Ç");



        }
}

static void Main(string[] args)
        {
            var audi= new Araba();
            audi.Marka = "Audi";
            audi.Model = "R8";
            audi.Renk = "Siyah";
            audi.Otomatik = true;

            audi.Menu();
}

```

![Yukarıdaki uygulamanın çıktısı](/files/-MLNBV1JRbCgstcmOjA9)

## Method Parametreleri

```aspnet
class Islem{
        public int Toplama ( int x , int y) {
            Console.Write("Toplam: ");
            return x+y;
        }

// Dizi içine istenildiği kadar parametre gönderilebilir
        public int SinirsizToplam (params int[] sayilar) {
            int toplam = 0;
            foreach (var sayi in sayilar)
            {
                toplam += sayi;
            }
            return toplam;
        }
        
}
var islemler = new Islem();
Console.WriteLine(islemler.Toplama(5,5));
Console.WriteLine("****************");
Console.WriteLine(islemler.SinirsizToplam(5));
Console.WriteLine(islemler.SinirsizToplam(5,5));
Console.WriteLine(islemler.SinirsizToplam(5,5,5));
Console.WriteLine(islemler.SinirsizToplam(5,5,5,5));
Console.WriteLine(islemler.SinirsizToplam(5,5,5,5,5));
```

![Yukarıdaki uygulamanın çıktısı](/files/-MLNC3NGCnictlQ9DbyH)

## Overload Methods

```aspnet
/*
Araba class ı için bir overload yapısı kurduk. Burada ek olarak kullanıcıdan
arabanın max hızını istiyoruz. Kullanııcı hızlanmak istediğinde bir hız
bilgisi istiyoruz. Eğer kullanıcının girdiği hız bilgisi arabanın max
hızından fazla ise overload mesajı olarak hızı aşmamasını söyleyebiliriz. 
*/ 
    
class Araba{
        public string Marka { get; set; }
        public string Model { get; set; }
        public string Renk { get; set; }
        public bool Otomatik { get; set; }
        public int MaxHiz { get; set; }

        public void Start(){
            Console.WriteLine(this.Marka + " Çalıştı");
        }
        public void Stop(){
            Console.WriteLine(this.Marka + " Durdu");
        }
        public void Slow(){
            Console.WriteLine(this.Marka + " Yavaşlıyor");
        }
        public void Fast(){
            Console.WriteLine(this.Marka + " Hızlanıyor");
        }

        public void Fast(int km){
            if(km>this.MaxHiz){
                Console.WriteLine("Max hızı aşmayınız");
            }else{
                Console.WriteLine(this.Marka +" "+  km + " hızına getiriliyor");
            }
        }

        public void Menu(){
            string komut;

            do{
            Console.WriteLine("1-Start / 2-Stop / 3-Slow / 4-Fast / Ç-Çıkış");
            Console.Write("Seçiminiz-> "); 
            komut = Console.ReadLine();

            switch(komut){
                case "1":
                this.Start();
                break;

                case "2":
                this.Stop();
                break;

                case "3":
                this.Slow();
                break;

                case "4":
                Console.Write("Hız bilgisi girmek istiyor musunuz: ");
                string secim = Console.ReadLine();

                if(secim=="e"){
                    Console.Write("Hız: ");
                    int km = int.Parse(Console.ReadLine());
                    this.Fast(km);
                }else{
                    this.Fast();
                }

                this.Fast();
                break;

                default:
                Console.WriteLine("Yanlış Seçim");
                break;
            }
            }
            while(komut!="Ç");



        }
    }
    class Islem{
        public int Toplama(int a, int b){
            return a+b;
        }
        public int Toplama(int a, int b, int c){
            return a+b+c;
        }
        public int Toplama(int a, int b, int c, int d){
            return a+b+c+d;
        }
    }
    

    class Program
    {

        static void Main(string[] args)
        {

            var opel = new Araba();
            opel.Marka = "Opel";
            opel.Model = "Astra";
            opel.Renk = "Siyah";
            opel.Otomatik = true;
            opel.MaxHiz=250;

            opel.Menu();

        }

```

## Constructor Methods

{% hint style="success" %}
**`ctor`** ile otomatik constructor oluşturabiliriz.&#x20;
{% endhint %}

```aspnet
public Araba(string model, string marka, string renk, bool oto, int hiz)
        {
            this.Marka = marka;
            this.Model = model;
            this.Renk = renk;
            this.Otomatik = oto;
            this.MaxHiz = hiz;
        }
        
   var audi = new Araba("Audi","R8","Siyah",true,350);
   Console.WriteLine(audi.Marka);
   Console.WriteLine(audi.Model);
   Console.WriteLine(audi.Renk);
   Console.WriteLine(audi.Otomatik);
   Console.WriteLine(audi.MaxHiz);
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cnahmet.gitbook.io/asp-net-notlarim/nesne-tabanli-programlama/untitled.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
