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

Java Giriş - M.ilkucar Kaynak(27.02.2014): http://e-nokta.org/content/jsf-jsp-ve-servlet-arasindaki-fark-nedir

Detaylı

Anne Çoçuk Oyun grubu

Anne Çoçuk Oyun grubu Anne Çoçuk Oyun grubu 1 ile 3 yaş arasi çoçuklar icin

Detaylı