OOP etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
OOP etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7 Temmuz 2009 Salı

Polymorphism Nedir

Polymorphism (Çok Biçimlilik)
Nesne Yönelimlenin anlatması biraz karışık ilkelerinden biridir ama bir seneryo ile olayı anlatmaya çalışalım.Satınal isimli bir fonksiyonumuz olsun. eğer i ürünü satın alınacak ise sadece geriye i'yi geri döndüren bir fonksiyon olmalı.Peki Satınal i ve j gibi iki farklı ürününde satın alınmasında kullanılmak isteniyor işte bu durumda SatınAl fonksiyonu çok biçimli olarak ele almak iyi bir seçim olmalı hem kodu koyalım.

Module Module1

Sub Main()
Dim two As New One()
WriteLine(two.satinal(10))
'calls the function with one argument
WriteLine(two.satinal(10, 20))
'calls the function with two arguments
WriteLine(two.satinal(10, 20, 30))
'calls the function with three arguments
Read()
End Sub

End Module

Public Class One
Public i, j, k As Integer

Public Function satinal(ByVal i As Integer) As Integer
'function with one argument
Return i
End Function

Public Function satinal(ByVal i As Integer, ByVal j As Integer) As Integer
'function with two arguments
Return i + j
End Function

Public Function satinal(ByVal i As Integer, ByVal j As Integer, ByVal k As Integer) As Integer
'function with three arguments
Return i + j + k
End Function

End Class


Çıktı olarak da
10
30
60
üreteceği aşıkar

vb.net Inheritanace (Miras)

Inheritance Nedir

OOP yazarken çokca kullanılan bir işlem.Inheritance (Dahillendirme) anlamak için OOP mantığını bilmek gerekiyor.Tabiki.


Araba diye bir clasımız var mı var.Özellikleride tanımlı motoru var, 4 kapılı, direksiyonu falan filan....... tanımladınız.


şimdi BMW de bir araba doğru muyum doğru. Onunda 4 kapısı,motoru,direksiyonu var mı var şimdi arabanın tüm özelliklerini BMW için bir daha yazarsak Ayıp ederiz.
Bunun için BMW Class'ına araba Classını Inherit etmeliyiz. işte Yapısı nasıl peki ? İşte Syntax.


Public Class Araba
---
---
End Class

Public Class BMW
Inherits Araba
---
---
End Class


Bu kadar .....

Bir de örnek çakalım pekişsin.....
Imports System.Console
Module Module1

Sub Main()
Dim ss As New Two()
WriteLine(ss.sum())
Read()
End Sub

End Module

Public Class One
'base class
Public i As Integer = 10
Public j As Integer = 20

Public Function add() As Integer
Return i + j
End Function

End Class

Public Class Two
Inherits One
'derived class. class two inherited from class one
Public k As Integer = 100

Public Function sum() As Integer
'using the variables, function from base class and adding more functionality
Return i + j + k
End Function

End Class



Sonucun ne dönmesini beklersiniz. normalde ss Two Class türemiştir.onunda tek elemanı k =100 O halde sonuç 100 olur demeyin sakın :( Two class'ı One classını inherit etmiş ve doğal olarak i+j+k değerlerinide alıp 130 olarak sonuç bulunur.

Constructors Nedir

Aslında Constructer oldukca çok kullanılan Class lar içindeki Sub-End Sub parametreleri ile tanımlı (vb.net için) kod bloklarıdır. Örnek le anlatacak olursak;
Public Class Employee
Public Sub Work()
System.Console.WriteLine("I am working.")
End Sub
End Class


Work bir Constructer olarak tanımlanmış ve kullanımı ise
Dim employee As Employee
employee = New Employee()
employee.Work()
Şeklinde yazılabilir.

Base Classlarla ilgili olarak nasıl kullanabiliriz.Derseniz Inheritance konusunda biraz değineceğim fakat bir örnek olsun .net coşkun gibilerinden....
Public Class personel
Public Sub New()
System.Console.WriteLine("Personelin constructor'ü.")
End Sub

Public Sub Work()
System.Console.WriteLine(Personel Çalışıyor.")
End Sub
End Class

Public Class Patron: Inherits personel
Public Sub New()
System.Console.WriteLine("Patron constructor.")
End Sub
End Class

Patron class'ına Personel Dahil Edilerek (Inherit).onun özellikleri alınmış.
Patronda Aslında bir personeldir yaklaşımı katılmış oluyor.

Kullanımı ise şöyle

Dim manager As Manager
manager = New Manager()

Muhtemel Çıktımız ise

Personel constructor'ü.
Patron constructor.
Şeklinde olmalı gibi geliyor insanın içine.

Class ve Objeler

-Class ve Objeler
Visual Basic'de Class lar Class-End Class ifadeleri arasına yazılır.
incelemek için bir Class Syntax verecek olursak
Public Class Test
----- Variables
-----Methods
-----Properties
-----Events
End Class
Şeklinde düşünebiliriz.
Bir Classtan Yeni bir obje türetmek istenirse o obje New ifadesiyle türeterek yeni isimle oluştururuz.Örnek Olarak Dim obj As New Test()
Şimdi bir Class ve Bu classtaki nesneden türetilen bir objeyle basit bir consol uygulaması yapabiliriz.
Module Module1
Imports System.Console

Sub Main()
Dim obj As New Test()
'creating a object obj for Test class
obj.disp()
'calling the disp method using obj
Read()
End Sub

End Module

Public Class Test
'creating a class named Test
Sub disp()
'a method named disp in the class
Write("Welcome to OOP")
End Sub
End Class

Visual Basic ile OOP

OOP konularını bu başlıklar altında sınıflamak oldukca iyi olacak diye düşünüyorum.

-Class ve Objeler
-Constructors
-Inheritance
-Polymorphism
-Interfaces
-Abstract Classes
-Structures
Şimdi kısa kısa konuları özetleyeceğim.Emin değil fakat daha sonra ayrıntılı olarakda konuya girebilirim.

Böylece Nesne Yönelimli Yazılım Dilinin Üç Prensibinide içermiş olacağız. Inheritance(Miras) ,encapsulation ve polymorphism’dir