DersNotu4
Transkript
DersNotu4
2011-2012 Bahar Dönemi INHERITANCE 12.03.2012 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Görsel Programlama-I (Visual Programming) 4.Hafta 1 Miras gelmesi Çocuk1 (ebeveyn) Parent Miras gelmesi ÇocukN Child Miras gelmesi Torun1 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Ebeveyn 12.03.2012 Miras -inheritance Nesneler public , Internal protected , Internal , protected olan özellik ve metodları miras olarak aktarılır. Bunlarda protected olanlar başka programda çocuk üzerinden erişilemez Private özellik ve metodlar miras olarak aktarılmaz. 2 12.03.2012 Class Yapısı Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Temel Class Türetilmiş(inherit) Class public class Form1 : Form { } Türetilmiş(inherit) Class Türetilmiş(inherit) Class 3 12.03.2012 Class Yapısı Türetilmiş(inherit) Class Türetilmiş(inherit) Class Türetilmiş(inherit) Class Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Temel Class( base Class) 4 12.03.2012 Miras -inheritance public class ebeveyn { Kodlar; } class mirasci : ebeveyn { Kodlar; } Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Kalıtım : Bir sınıfın tüm özellik ve metotlarının miras olarak alınmasıdır. 5 public class Parent { internal protected string s; internal string x; protected string y; // türetimiş sınıfta kullanılır ancak miras üzerinden başkası kullanamaz private string z; // miras olmaz public void print( ) { Console.WriteLine("I‘m a Parent Class."); } } public class Child : Parent { private int m = y; // miras gelen y buradan erişilebilir public void Yaz() { Console.WriteLine("I'm a Child Class."); } } static void Main(string[] args) { Child abc = new Child(); abc.s = "deneme"; // y ve z buradan erişilemez ancak s ve x erişilebilir abc.Yaz(); abc.print(); } 12.03.2012 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Miras -inheritance 6 public class Parent { internal protected string s; public void print( ) { Console.WriteLine("I'm a Parent Class."); } } public class Child : Parent { public void print() { base.print() ; // miras olarak gelen print() Console.WriteLine("I'm a Child Class."); } } static void Main(string[] args) { Child x = new Child(); x.s = “Miras olarak gelen s değişkeni"; x.print(); } 12.03.2012 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Miras -inheritance 7 12.03.2012 Türetme Miras (Inheritance) public class ATA { public ATA( ) { Console.Write(“ Ebeveyn CONSTructure”); } } public class COCUK : ATA { } static void Main(string[] args) { ATA m = new ATA(); Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Constructure metodu olan base Class COCUK d = new COCUK(); } 8 12.03.2012 Türetme Miras (Inheritance) public class ATA { public ATA( string s) { Console.Write( s + “ Ebeveyn CONSTructure”); } } public class COCUK : ATA { public COCUK() : base ( “ ABCD ”) ; // ebeveyn const. { } } static void Main(string[] args) { COCUK d = new COCUK(); } Muhammer İLKUÇAR, MAKÜ-2011 BURDUR : base( ) 9 public class ATA { public ATA( string s ) { Console.Write( s +“ Ebeveyn CONSTructure”); } } public class COCUK : ATA { public COCUK( string a , int b) : base( a ) ; // ebeveyn const. { } } static void Main(string[] args) { COCUK d = new COCUK(“ ABC ” , 56 ); } 12.03.2012 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Türetme Miras (Inheritance) 10 public class Parent { protected string parentString; public Parent() { Console.WriteLine("Parent Constructor."); } // overloading consturcure public Parent(string myString) { parentString = myString; Console.WriteLine(parentString); } public void print() { Console.WriteLine("I'm a Parent Class."); } } public class Child : Parent { public Child() : base("From Derived") { Console.WriteLine("Child Constructor."); } public new void print() { base.print(); Console.WriteLine("I'm a Child Class."); } } static void Main(string[] args) { Child child = new Child(); child.print(); //eğer Child constructurede parametre olsaydı //Child child1 = new Child("baba"); Console.ReadKey(); } 12.03.2012 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Miras -inheritance 11 public class Parent { protected string parentString; public Parent() { Console.WriteLine("Parent Constructor."); } // overloading consturcure public Parent(string myString) { parentString = myString; Console.WriteLine(parentString); } public void print() { Console.WriteLine("I'm a Parent Class."); } } public class Child : Parent { public new void print() { base.print(); Console.WriteLine("I'm a Child Class."); } } static void Main(string[] args) { Child child = new Child(); child.print(); //eğer Child constructurede parametre olsaydı //Child child1 = new Child("baba"); Console.ReadKey(); } 12.03.2012 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Miras -inheritance 12 12.03.2012 Çok Biçimlilik (Polymorphism) public class ANA { private int x; public virtual int VeriAl (int a) { this.x = a; return x; } } class COCUK : ANA { private int x; public override int VeriAl (int a) { this.x = a*2; return x; } } Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Virtual ve Override Metodları : Kalıtım yoluyla elde edilen sınıflarda temel sınıfta bulunan bir metodu aynı isimle oluşturmak için kullanılır. Kalıtım yoluyla elde edilmiş sınıfta virtual metod çağrılırken override (üzerine binme) kullanılarak değiştirilebilir (polymorphism- çok biçimlilik) 13 public class ogrenci { protected int Mvize, Mfinal; protected double ort; public int vize { set { Mvize = value; } get { return Mvize; } } public int final { set { Mfinal = value; } get { return Mfinal; } } public double ortalama { get { return ort; } } public virtual void NotHesapla() { ort = Mvize * 0.4 + Mfinal * 0.6; } } class uzaktan_egitim : ogrenci { public override void NotHesapla() { ort = Mvize * 0.2 + Mfinal * 0.8; } } static void Main(string[] args) { uzaktan_egitim x = new uzaktan_egitim(); x.vize = 40; x.final = 80; x.NotHesapla(); Console.Write(" Ortalaması :" + x.ortalama ); } 12.03.2012 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Virtual & Override Methods 14 12.03.2012 Abstarct Class public abstract class MyClass { } Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Abstract Classes , “new “ ile ulaşılamaz . Sadece başka sınıflar tarafından miras alınabilir. Yani sadece yeni oluşacak class’ lara model Class olabilir. 15 Sekil Sekil2D public abstract class Sekil2D : Sekil { // kodlar } public class Cember : Sekil2D { public override void Draw(int x, int y) { // kodlar } } Sekil x = new Sekil(); // abstract class Bu şekilde çağıramayız Sekil y = new Cember(); // doğru Cember z=new Cember(); // doğru Cember Muhammer İLKUÇAR, MAKÜ-2011 BURDUR public abstract class Sekil { public virtual void Draw(int x, int y) { //komutu buraya yaz } } 12.03.2012 Abstarct Class 16 ebeveyn2 Child C# .net Çoklu Kalıtım (bir class ‘ın birden çok class’ dan miras alma işlemi) desteklemez. Ancak bu işlem Interface ile gerçekleştirilebilir. Yani C#’da çoklu kalıtım (multiple inheritance) ancak arayüzler (interface) ile sağlanabilir. Muhammer İLKUÇAR, MAKÜ-2011 BURDUR ebeveyn1 12.03.2012 Multiple inheritance ( Çoklu Kalıtım) 17 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR 12.03.2012 Harici dosya olarak Class 18 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR 12.03.2012 Harici dosya olarak Class 19 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR 12.03.2012 Harici dosya olarak Class 20 Genel kullanım için Dll (dinamik ink Libraray) Class Oluşturma ve Kullanma 12.03.2012 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Harici dosya olarak Class 21 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR 12.03.2012 Harici dosya olarak Class 22 Muhammer İLKUÇAR, MAKÜ-2011 BURDUR 12.03.2012 Harici dosya olarak Class 23 12.03.2012 Harici dll Class Kullanımı Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Oluşturduğumuz dll uzantılı dosyayı projemizin exe uzantının bulunduğu bin dizine içine koyarız. 24 12.03.2012 Harici dosya olarak Class Muhammer İLKUÇAR, MAKÜ-2011 BURDUR Oluşturduğumuz dll uzantılı dosyayı projemizin exe uzantının bulunduğu bin dizine içine koyarız. 25 ? Muhammer İLKUÇAR, MAKÜ-2011 BURDUR 12.03.2012 Soru ve Görüşleriniz… 26
Benzer belgeler
Java Giriş - M.ilkucar
Kaynak(27.02.2014): http://e-nokta.org/content/jsf-jsp-ve-servlet-arasindaki-fark-nedir