MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 10: Sınıf
Transkript
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 10: Sınıf
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 10: Sınıf (Class) Yapıları Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü [email protected] Ders Web Sayfası: http://ceng.anadolu.edu.tr/Ders.aspx?dersId=107 1 THIS DEYİMİNİN KULLANIMI • Bazen bir metotun içinde o metotun ait olduğu sınıftan yaratılacak nesneyi veya o nesnenin bir alt değişkenini tanımlamak gerekir. • Nesne daha tanımlanmadığından doğrudan nesne ismini kullanamayız. • Bunun yerina java this deyimini kullanır. • This deyimi bilhassa sınıfa ait değişken isimlerinin aynısı metotda kullanılmışsa da işe yarar. • Bu durumda tüm sınıfa ait değişkenler this.değişken_ismi komutuyla çağırılabilir. 2 THIS DEYİMİNİN KULLANIM ÖRNEĞİ (1. KISIM) import javax.swing.*; public class MetotVeSinifDeg { //buradaki degiskenler tum sinifa aittir double x ; int y ; void metot1() //metota hiç bir değişken girmiyor { double x; int y; x=5.5; y=6; //tum sinifa at degiskenler this kelimesi ile birlikte kullanilabilirler String s="metot1 in degiskenleri this ile ulasim : x = "+this.x+" y = "+this.y+"\n"; s+="metot1 in ic degiskenleri : x = "+x+" y = "+y; JOptionPane.showMessageDialog(null,s); } THIS DEYİMİNİN KULLANIM ÖRNEĞİ (2. KISIM) public void metod2() { x = 2.5; y = 3; metot1(); } public static void main(String arg[]) { MetotVeSinifDeg w=new MetotVeSinifDeg(); w.metod2(); } } SINIF YAPISININ KULLANILMASINA ÖRNEK (1. KISIM) public class KompleksSayi { public double gercek; public double sanal; public KompleksSayi(double g,double s) { gercek=g; sanal=s; } public KompleksSayi(KompleksSayi s1) { gercek=s1.gercek; sanal=s1.sanal; } public void topla(KompleksSayi s1) { gercek+=s1.gercek; sanal+=s1.sanal; } public static KompleksSayi topla(KompleksSayi s1,KompleksSayi s2) { KompleksSayi z3=new KompleksSayi((s1.gercek+s2.gercek),(s1.sanal+s2.sanal)); return z3; } public String toString() { String s=+gercek+" + i*"+sanal+" \n"; return s; } } SINIF YAPISININ KULLANILMASINA ÖRNEK (2. KISIM) import javax.swing.*; public class KompleksSayiTesti { public static void main(String args[]) { KompleksSayi z1=new KompleksSayi(2.0,3.5); KompleksSayi z2=new KompleksSayi(1.1,2.0); KompleksSayi z3=new KompleksSayi(z2); z3.topla(z1); String s="z1 = "+z1.toString()+"z2 = "+z2.toString()+"toplam z3 = "+z3.toString(); JOptionPane.showMessageDialog(null,s, "kompleks sınıfı testi",JOptionPane.PLAIN_MESSAGE); } } INHERITANCE (KALITIM) KAVRAMI • Inheritance, bir class'ın başka bir class'daki property ve method'lara sahip olmasıdır. • Belli bir class, daha genel bir kavramı ifade eden class'ın üyelerine sahip olarak, onları tekrar tanımlamak zorunda kalmaz. • Bir class'ın diğerindeki özellikleri miras olarak alması için kullanılan keyword 'extends' dir. • Anlam olarak "Bu class şu class'ı 'genişletir' yani ondaki property ve methodları alır ve yenilerini ekler" demektir. • Java dilindeki bir sınıf sadece bir tane başka sınıfın metot ve değişkenlerini kalıtım yoluyla aktarabilir. INHERITANCE (KALITIM) KAVRAMI – ÖRNEK İLE AÇIKLAMA public class Animal{ } public class Mammal extends Animal{ } public class Reptile extends Animal{ } public class Dog extends Mammal{ } KALITIM ÖRNEĞİ – 1. KISIM class Box { double width; double height; double depth; Box() { } Box(double w, double h, double d) { width = w; height = h; depth = d; } void getVolume() { System.out.println("Volume is : " + width * height * depth); } } KALITIM ÖRNEĞİ – 2. KISIM public class MatchBox extends Box { double weight; MatchBox() { } MatchBox(double w, double h, double d, double m) { super(w, h, d); weight = m; } public static void main(String args[]) { MatchBox mb1 = new MatchBox(10, 10, 10, 10); mb1.getVolume(); System.out.println("width of MatchBox 1 is " + mb1.width); System.out.println("height of MatchBox 1 is " + mb1.height); System.out.println("depth of MatchBox 1 is " + mb1.depth); System.out.println("weight of MatchBox 1 is " + mb1.weight); } } KAYNAKÇA 1. Turhan Çoban, Java Bilgisayar Diliyle Programlama. 2. http://ibrahimbilge.com/java-object-oriented-kavrami-ii/ 11