Bölüm 5 Nesneler ve Metotlar

Slides:



Advertisements
Benzer bir sunumlar
Programlama-II (Java ile Bilgisayar Programlama)
Advertisements

Saatte V km hız ile giden bir aracın t zamanda aldığı yolu bulan metodu yazınız. Metodu kullanacak bir program yazınız. ( yol=hız*zaman, x=V*t) — Metot.
C# - Metotlar.
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
Nesnelerin Özellikleri. - Üye nesneler - friend belirtesi - Nesnelerin operatörlere yüklenmesi - this yerel (lokal) değişkeni - inline tanımlı üye fonksiyonlar.
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
OOP UYGULAMA 5.
EDUTIME Java Day 4 Serdar TÜRKEL.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
P AKET E RIŞIMLERI SıNıFLARıN YENIDEN KULLANıMı. P AKET ( P ACKAGE ) Paketler kütüphaneleri oluşturan elemanlardır. import java.io.BufferedReader; BufferedReader.
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR, NESNE DİZİLERİ Yılmaz Kılıçaslan.
Sınıfların Tekrardan Kullanılması
Nesne Tabanlı Programlama
Nesneye Yönelik Programlama Dr. Pelin GÖRGEL
BPR152 ALGORİTMA VE PROGRAMLAMA - II
NESNEYE YÖNELİK PROGRAMLAMA
DİZİLER.
P 2. Ünitede Nesneye Dayalı Programlama anlatılıyor. p Nesneye dayalı programlama yeni veri tiplerinin ve bu tipleri işletmek için gereken işlemleri oluşturmayı.
DELEGATE OOP-UYG.
Erişim Denetimi, Fonksiyon
NESNE TABANLI PROGRAMLAMA -METOTLAR-
METODLAR.
C# Metot Overloading (Aşırı yükleme)
Sorular? Öneriler?. Referanslar Referanslar (Tekrar) Eğer aşağıdaki gibi yazarsak ne olur: int x; double y; char c; ???
JAVADA PROGRAM DENET İ M İ VE OPERATÖRLER. int a ; a=4 ; // do ğ ru bir atama 4=a ; // yanlış bir atama!
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
Java Sınıf ve Nesne Kavramı UML Gösterimi
Ses Kontrol Metodlar ile ilgili son birkaç söz Tekrar: Programlama için başlıca 3 model.
Metotlar.
JAVA İLE PROGRAMLAMAYA GİRİŞ
METOTLAR.
ÇOK BİÇİMLİLİK POLYMORPHISM
Önceki Dersi Hatırlama !!
Kalıtım.
NESNEYE YÖNELİK PROGRAMLAMA
EDUTIME Java Day 8 Serdar TÜRKEL.
Numaralandırmalar(Enumaration)
Kalıtım , Sınıf Asli Ergün.
Demet AYDIN METODLAR Demet AYDIN
Class KahveFincani { public KahveFincani() { System.out.println("KahveFincani..."); } } public class YapilandirciBasitOrnek { public static void main(String[]
JAVA’DA DİZİLER Dr.Galip AYDIN.
Sınıflar ve Nesneler Sınıf: bir nesnenin şablonunu, kalıbını, şeklini, davranışını, kalıtımını değişkenleri, metodları ve ebeveynleri vasıtasıyla tanımlar.
SINIFLAR VE DİNAMİK BELLEK YÖNETİMİ VE SINIFLARIN DİĞER ÖZELLİKLERİ Yılmaz Kılıçaslan.
Trees, Vectors, Iterators. ADT Abstract Data Type (ADT) vs implementation -Soyut Veri Türleri - Uygulamaları.
Ders İçeriği Liste Soyut veri yapısı (ADT)
Bölüm 4 Sınıflar ve Metotlar
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
JAVA PROGRAMLAMA ORNEKLER
ODTU-SEM Copyright (c) 2011 Kalıtım(Inheritance) Subclass lar tüm method ve attributes larının superclass ından alırlar. Bu işlem için extends keyword.
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
BİLGİSAYAR programlama II
Hafta2 Rekürsif Algoritmalar
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Nesneye Dayalı Programlama
Nesneye Dayalı Programlama Temel Kavramlar Hüseyin ESKİ.
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Kurucular(Yapıcılar), Yıkıcılar
Nesneye Dayalı Programlama 1
Nesneye Dayalı Programlama 1
Nesneye Dayalı Programlama 1
MTM216 GÖRSEL PROGRAMLAMA
Nesneye Dayalı Programlama 1
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
Sunum transkripti:

Bölüm 5 Nesneler ve Metotlar Bil 102 Bölüm 5 Nesneler ve Metotlar Bil 102

Metotlarla Programlama Bir metodun içinde başka bir metot çağrılabilir. Aynı sınıfın içinden çağrılıyorsa sadece metot adı ile çağrılır (veya this kullanılabilir  this.metotadı). Farklı bir sınıf içinden çağrılıyorsa, nesneadı.metotadı şeklinde çağrılmalıdır. Farklı bir sınıf içinden çağrılabilmesi için metodun public olarak tanımlanmış olması gerekir. Bil 102

Metotlarla Programlama Başka sınıflar tarafından çağrılma gereksinimi olmayan metotlar private, diğer sınıflar tarafından çağrılması gereken metotlar public olarak tanımlanır. Bu şekilde private olarak tanımlanmış metotlara yardımcı metotlar denir. Bil 102

Sayı Oyunu Örneği Kod. Bil 102

Static Metotlar ve Değişkenler Static olarak tanımlanan bir değişken veya metot, nesnenin türüne ve durumuna bağlı olmaksızın kullanılabilen bir yapıdadır. Bu durumda sınıf ismi nesne yerine kullanılır. Ayrıca bir nesne oluşturulmaz. Math.sqrt(25); Sınıf ismi Metot ismi Bil 102

Static Metotlar ve Değişkenler Static olarak tanımlanan bir metot veya değişkenin değeri ya da kullanımı herhangi bir nesnenin durumundan bağımsız olmalıdır. Math.min(a,b) : Hangi nesne tarafından çağrılırsa çağrılsın verilen iki sayının küçüğünü hesaplar. Static olarak tanımlanabilir. Bil 102

Static Metotlar ve Değişkenler Yalnızca sınıf değişkenleri ve metotlar static olabilir; static sınıf olmaz. Static nesne ve metotları çağırırken: Sınıfadı.metotadı(); Sınıfadı.değişkenadı(); Static olmayan nesne ve metotları çağırırken: Nesneadı.metotadı(); Nesneadı.değişkenadı(); Bil 102

Static Metotlar ve Değişkenler Static olduğu halde nesneadı.metotadı() veya nesneadı.değişkenadı şeklinde çağrılması halinde derleyici hata vermez. Ancak static metot ve değişkenler, kaç tane nesne yaratılmış olursa olsun sadece tek bir adet değere ve referansa sahiptir. Static metot ve değişkenler this kullanılarak çağrılamaz  Derleyici Hatası Bil 102

Static Metotlar ve Değişkenler public class StatikOrnek { public static int staticA; // statik degisken public int a; //statik olmayan degisken public static void setStaticA(int deger) { staticA = deger; } public void setA( int deger) { a = deger; } public int getStaticA() { return staticA; } public int getA() { return a; } } Bil 102

Static Metotlar ve Değişkenler public class DeneStatikOrnek { public static void main(String [] args) StaticOrnek s1 = new StaticOrnek(); StaticOrnek s2 = new StaticOrnek(); s1.setStaticA(5); s1.setA(10); s2.setStaticA(15); s2.setA(20); System.out.print(“s1 nesnesinin staticA degeri: ”); System.out.println(s1.getStaticA); System.out.print(“s1 nesnesinin A degeri: ”); System.out.println(s1.getA); System.out.print(“s2 nesnesinin staticA degeri: ”); System.out.println(s2.getStaticA); System.out.print(“s2 nesnesinin A degeri: ”); System.out.println(s2.getA); }} s1 nesnesinin staticA degeri: 15 s1 nesnesinin A degeri: 10 s2 nesnesinin staticA degeri: 15 s2 nesnesinin A degeri: 20 Bil 102

Static – Düzeltmelerden Sonra public class StatikOrnek { public static int staticA; // statik degisken public int a; //statik olmayan degisken public static void setStaticA(int deger) { staticA = deger; } public void setA( int deger) { a = deger; } public static int getStaticA() { return staticA; } public int getA() { return a; } } Bil 102

public class DeneStatikOrnek { public static void main(String [] args) StaticOrnek s1 = new StaticOrnek(); StaticOrnek s2 = new StaticOrnek(); StatikOrnek.setStaticA(5); s1.setA(10); StatikOrnek.setStaticA(15); s2.setA(20); System.out.print(“s1 nesnesinin staticA degeri: ”); System.out.println(StatikOrnek.getStaticA); System.out.print(“s1 nesnesinin A degeri: ”); System.out.println(s1.getA); System.out.print(“s2 nesnesinin staticA degeri: ”); System.out.print(“s2 nesnesinin A degeri: ”); System.out.println(s2.getA); } Bil 102

Örnekler C M,N için bir sınıf yazınız. Sınıfın metotları verileriAl (ve hesapla) M, N parametrelerini main’den girerek CM,N ’i hesapla. Bil 102

public class kombinasyon { public static int verileriAl(int M, int N) int c; c=nFaktoriyel(M) / (nFaktoriyel(N) * nFaktoriyel(M-N)); // c=this.nFaktoriyel(M) / (nFaktoriyel(N) * nFaktoriyel(M-N)); // derleyici yukaridaki satir icin hata verir return c; } public static int nFaktoriyel(int K) int nFakt; nFakt=1; for(int i=1; i<=K; i++) nFakt*=i; return nFakt; Bil 102

Import java.util.*; public class KombinasyonDeneme { public static void main(String[]args) int M,N,sonuc,gecici; Scanner klavye = new Scanner(System.in); System.out.println("M ve N sayılarını giriniz (M>N):"); M=klavye.nextInt(); N=klavye.nextInt(); if(M<=N) gecici=M; M=N; N=gecici; } sonuc=kombinasyon.verileriAl(M,N); System.out.println("c="+sonuc); Bil 102

Örnekler 1!+2!+3!+…+N! Static metot kullanarak Nesne kullanarak Bil 102

//static metot kullanarak yazilmis hali public class deneFaktoriyelToplami { public static void main(String[]args) long n, toplam=0; System.out.print("Bir tamsayi giriniz (n>2):"); Scanner klavye = new Scanner(System.in); n = klavye.nextInt(); for(long k=1; k<=n; k++) toplam = toplam + faktoriyel(k); System.out.println("1!+2!+...+"+n+"!="+toplam); } public static long faktoriyel(long sayi) long f=1; for(int k=1; k<=sayi;k++) f=f*k; return f; Bil 102

static metot static olmayan metot //nesne kullanilarak yazilmis hali public class deneFaktoriyelToplami { public static void main(String[]args) long n, toplam=0; faktoriyelToplami eleman = new faktoriyelToplami (); System.out.print("Bir tamsayi giriniz (n>2):"); Scanner klavye = new Scanner(System.in); n = klavye.nextInt(); for(long k=1; k<=n; k++) toplam = toplam + eleman.faktoriyel(k); System.out.println("1!+2!+...+"+n+"!="+toplam); } public class faktoriyelToplami public long faktoriyel(long sayi) long f=1; for(int k=1; k<=sayi;k++) f=f*k; return f; static metot static olmayan metot Bir static metot içinde static olmayan bir metot çağrılabilmesi için, static olmayan metoda ait bir nesne yaratılıp bu nesneyle beraber kullanılması gerekir. Bil 102

Bir static metot içinde static olmayan bir metot çağrılabilmesi için, static olmayan metoda ait bir nesne yaratılıp bu nesneyle beraber kullanılması gerekir. import java.util.*; public class DaireHesabi { public static final double PI=3.1415; private double daireCapi; public void setDaireCapi(double Cap) { daireCapi = Cap; } public static double alan(double yaricap) { return (PI* yaricap * yaricap); } public void alanGoster() { System.out.println(“Dairenin alani “+ alan(daireCapi/2)); } public static void alanBulma() { System.out.println(“Dairenin capini giriniz:”); Scanner klavye = new Scanner(System.in); double cap1 = klavye.nextDouble(); DaireHesabi daire1 = new DaireHesabi(); daire1.setDaireCapi(cap1); daire1.alanGoster(); } public class DeneDaireHesabi { public static void main(String [] args ) { DaireHesabi daire1 = new DaireHesabi(); daire1.setDaireCapi(2); DaireHesabi.alanBulma(); } } Bil 102

Static Değişkenler Static değişkenler nesneden bağımsız kullanım için uygundur. Static değişkenler = Sınıf değişkenleri Bir static metot içinde static olmayan bir değişken çağrılabilmesi için, static olmayan metoda ait bir nesne yaratılıp bu nesneyle beraber kullanılması gerekir. Static bir metot static bir değişkeni kullanıyorsa herhangi bir nesneye bağlı olmadan sadece sınıf değişkeni adıyla kullanabilir. Bil 102

Static main() metodu static bir metottur. Java programını çalıştırmak için kullanılır ve bir sınıf tanımının içinde yer almalıdır. main() metodu static olarak tanımlanmak zorundadır, aksi takdirde derleyici hata verir. Bil 102

Örnek public class DeneKitap { public static void main(String [] args) Kitap kitap1 = new Kitap(); kitap1.setBaslik(“TC Anayasasi”); kitap1.setBasimYili(2001); kitap1.setISBN(“123-45678-9”); kitap1.setSatisFiyati(24.50); kitap1.kitapYazdir(); } Kitap sinifini yazin. Bil 102

Math Sınıfı Math sınıfında kullanılan bütün metotlar static olarak tanımlanmıştır. Kullanırken nesne yaratmaya gerek yok. Sınıfadı.metotadı şeklinde kullanılır. Math.max(x,y) Bil 102

Fazladan Yükleme (Overloading) Bir metodun birden fazla durum için kullanılabilmesi işlemi. Sınıfın içinde metodun kullanılması gereken her durumun tanımlanması gerekmektedir. Bu metot başka bir metot tarafından çağırıldığında metottaki tanım ve parametre dizilişine göre hangi tanımın geçerli olduğu belli olacaktır. Bir metodun fazladan yüklenmesi yapılırken sadece metoda girilen parametrelere bakılır. Metodun geri verdiği veri tipinin bir önemi yoktur. Bil 102

Fazladan Yükleme Örn. Math.max (x,y) yazıldığında aynı metota int, long, float veya double veri tipi girilebilir. Bu durumda max metodu aşırı yüklenmiştir ve hangi veri tipinin hangi max metodunu kullanacağı girilen parametrelere göre ayarlanır. Bil 102

public class fazladanYukleme { public void ayniSey() { System. out public class fazladanYukleme { public void ayniSey() { System.out.println("Merhaba gencler..."); } public boolean ayniSey(int sayi) boolean yanit; if(sayi%2==0) yanit=true; else yanit=false; return yanit; } } public class fazladanYuklemeDeneme public static void main(String[]args) int N; Scanner klavye = new Scanner(System.in); System.out.print("Bir sayi giriniz:"); N=klavye.next(); fazladanYukleme fark=new fazladanYukleme(); yanit=fark.ayniSey(N); if(yanit) System.out.println(N+" cift sayidir."); System.out.println(N+" tek sayidir."); fark.ayniSey(); Bil 102

Fazladan Yükleme Metot fazladan yüklemesi yapıldığında veri tipi çevirimlerine dikkat etmek gerekir. Eğer double parametresi bekleyen bir metoda int veri tipi girildiğinde, eğer int veri tipi bekleyen aşırı yüklenmiş metot tanımı yoksa int otomatik olarak double’a çevrilir ve metot kullanılır. Bunun tersi durumda ise (double’ı int’e çevirmek gerektiğinde) derleyici bir hata verir. Bu durumda veri zorlaması yapılması gerekmektedir. public static void ornekMetot (double n1, int n2) public static void ornekMetot (int a1, double a2) ornekMetot (5,10); ornekMetot (5.0,10); Hata! Bil 102

Fazladan Yükleme Aynı parametrelere sahip, farklı veri tipi döndüren iki fazladan yüklenmiş metot Java’da aynı sınıf tanımı içinde kullanılamaz. public static int ornekMetot () public static char ornekMetot () Hata: Aynı parametreler girildiğinde hangi metodun kullanılacağı belli değil. Bil 102

Nesne Kurucular Bir nesne yaratıldığında nesnenin parametrelerine otomatik olarak veya kullanıcı vasıtasıyla çeşitli değerler atanabilir  Nesne kurucusu vasıtasıyla Nesne kurucusu: new SınıfAdı (…) şeklinde çağrılır. Nesne kurucularda aşırı yükleme yapılabilir. Eğer bir nesne kurucusu tanımlanmamışsa Java kendisi otomatik olarak bir nesne kurucusu tayin eder. Bu otomatik kurucu herhangi bir nesne parametresini değiştirmez, new SınıfAdı () şeklinde oluşturulur. Eğer programcı bir nesne kurucusu tanımlamışsa, herhangi bir otomatik kurucu kullanılmaz. Bil 102

Nesne Kurucular Nesne kurucusu da sınıfın diğer metotları gibi bir metottur. Bu metodun kullanımı istenilen şekilde ayarlanabilir. Fakat normal şartlarda nesne değişkenlerine ilk değerleri vermek için kullanılır. Eğer gerekirse nesne kurucusu diğer metotları da çağırabilir. Nesne kurucusu çağırıldığında metot sona erdiğinde o sınıfa ait yeni bir nesne oluşturulmuş olur. Bil 102

public static void main(String [] args) { public class Araba { private String renk; private int beygirGucu; private int hiz; public Araba(String renk, int guc, int hiz) { this.renk = renk; this.beygirGucu = guc; this.hiz = hiz; } public Araba(String renk) { this.renk = renk; } public void veriGoster() { System.out.println(…); … }} public static void main(String [] args) { Araba ferrari = new Araba(“kirmizi”, 450, 320); Araba fiat = new Araba(“beyaz”); fiat.setBeygirGucu(70); fiat.setHiz(155); } Bil 102

Sarmalayan Sınıflar Temel veri türleriyle (int, double, char, long, float) programcı veya Java tarafından hazırlanmış veri türleri (String, vs.) arasında fark vardır. Temel veri türlerinin herhangi bir sınıf gibi kullanılabilmesi için sarmalayan sınıflar adı verilen veri sınıfları oluşturulmuştur. Tablo 5.2 Bil 102

Sarmalayan Sınıflar Sarmalayan sınıfların kullanımı diğer sınıfların kullanımı ile aynıdır. Integer i = new Integer(); i = 10; Temel veri türlerinde atama nasıl yapılıyorsa sarmalayan sınıflarda da öyle yapılır. Kullanıcı tarafından yaratılan sınıflarda atama işlemi yapmak için bu amaca yönelik metotlar yazılması gerekir. Bil 102

Sarmalayan Sınıflar Sarmalayan sınıfa ait bir nesnenin değerini temel bir veri türüne atamak için: int j = i.intValue(); int j = i; Avantaj  Kullanıcıya kolaylık sağlayan çok sayıda metot ve değişkenler bulunuyor. Tablo 5.3, 5.4, 5.5 Bil 102

Referans : kadioğlu Bil 102