YZM 2105 Nesneye Yönelik Programlama

Benzer belgeler
YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2105 Nesneye Yönelik Programlama

CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği. Nesneye Yönelik Programlama

YZM 2116 Veri Yapıları

BİL-141 Bilgisayar Programlama I (Java)

YZM 2105 Nesneye Yönelik Programlama

YZM 2116 Veri Yapıları

YZM 3215 İleri Web Programlama

public static int Toplam int x, int y

YZM 2105 Nesneye Yönelik Programlama

YZM 2116 Veri Yapıları

YZM 3215 İleri Web Programlama

Ders 8 Konu Özeti ve Problemler

YZM 2116 Veri Yapıları

YZM 3215 İleri Web Programlama

ALGORİTMA VE PROGRAMLAMA II

YZM 3215 İleri Web Programlama

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

Nesne Yönelimli Programlama

MOBIL UYGULAMA GELIŞTIRME

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

NESNE TABANLI PROGRAMLAMA

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

YZM 2108 Yazılım Mimarisi ve Tasarımı

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

YZM 2108 Yazılım Mimarisi ve Tasarımı

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Yazılım Kodlama ve İ simlendirme Standartları v1.0

YZM 2116 Veri Yapıları

Nesne Yönelimli Programlama

Programlama Dillerinde Kullanılan Veri Tipleri

WEB PROGRAMLAMA II. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

NESNEYE YÖNELİK PROGRAMLAMA

ALGORİTMA VE PROGRAMLAMA I

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Operatörlerin Aşırı Yüklenmesi

Kalıtım (Inheritance)

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA II

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2105 Nesneye Yönelik Programlama

Nesneye Dayalı Programlama

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA I

Nesneye Dayalı Programlama

ALGORİTMA VE PROGRAMLAMA II

C++ Dersi: Nesne Tabanlı Programlama

ALGORİTMA VE PROGRAMLAMA I

Java String İşlemleri

YZM 2108 Yazılım Mimarisi ve Tasarımı

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

YZM 3102 İşletim Sistemleri Uygulama

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

Nesneye Yönelik Programlama (OOP) 7.Hafta

YZM 2105 Nesneye Yönelik Programlama

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Arasınav Örnek Soruları Bahar 2018

Sunum İçeriği. Programlamaya Giriş

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

Programlama Dilleri 3

Nesne Yönelimli Programlamaya Giriş - 2. Cem Ahmet MERCAN 16/04/2009

ALGORİTMA VE PROGRAMLAMA I

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

3. NESNE TABANLI PROGRAMLAMANIN PRENSİPLERİ

Dizi ( Array ) ve Dizgi ( String )

Nesne Yönelimli Programlama ve Kalıtım

YZM 2118 Yazılım Mimarisi ve Tasarımı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Nesneye Dayalı Programlama

ALGORİTMA VE PROGRAMLAMA I

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

C#(Sharp) Programlama Dili

YZM 3215 İleri Web Programlama

Java Programlama Güz Dönemi CLASS YAPISI

C++ Dersi: Nesne Tabanlı Programlama

Object-Oriented Programming Laboratuvar 11

NESNE TABANLI PROGRAMLAMA Temel Kavramlar

Ad Soyad: İmza: Object-Oriented Programming Quiz 4 60dk. Kapalı kitap. Kapalı defter. Kapalı cep telefonu. Hesap makinesi yok.

SINIF YAPISI ve NESNE YÖNELİMLİ PROGRAMLAMA NESNE YÖNELİMLİ PROGRAMLAMA

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI

Transkript:

YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1

BÖLÜM - 6 Kalıtım (Inheritance) - II Bu bölümde; Temel Sınıfların Metotlarını Ezme Çok biçimlilik ile ilgili konular anlatılacaktır. 2

Temel Sınıfın Metotlarını Ezme (Override) ve Çok Biçimlilik (Polymorphism) 3

Temel Sınıfın Metotlarını Ezme Önceden var olan bir sınıftan miras alınarak, genişletilmiş yeni bir sınıf oluşturduğunuzda, yeni sınıf içerisinde temel sınıfın tüm özellik ve metotları tanımlanmış olur. Bazen parent sınıfın üyeleri, özellikleri ve metotları tam olarak child sınıftan yaratılan nesneler için uygun olmayabilir. Farklı işlemler yapan fakat aynı isimdeki özellik veya metotların kullanımına çok biçimlilik (polymorphism) denmektedir 4

Temel Sınıfın Metotlarını Ezme (devam...) Çok biçimlilik, birçok form içeren anlamına gelmektedir. Aynı isimde olmalarına rağmen farklı işlemlerin yer aldığı metotlar için kullanılır. 5

Temel Sınıfın Metotlarını Ezme (devam...) Günlük hayatta çok biçimliliğe örnek gösterebilecek çeşitli olaylar bulunmaktadır: Tüm müzik aletleri için çalmak eylemi kullanılmasına rağmen, bir gitarın bir davuldan farklı bir biçimde çalınıyor olması. (Cal() metotları aynı ) Tüm araçlar için sürmek eylemi kullanılmasına rağmen, bir otomobilin kullanışının bir bisiklet kullanımından farklı olması, Tüm okulların mezun olma koşulları na sahip olması fakat bir lise mezuniyeti ile ilkokul mezuniyeti koşulları arasında farklılık olması çok biçimliliğe örnek gösterilebilir. 6

Temel Sınıfın Metotlarını Ezme (devam...) Bir virtual metot (ya da property) child sınıftaki aynı isme sahip bir metot tarafından başına override anahtar kelimesi eklenerek ezilmesine olanak sağlar. public class Parent { public virtual void Metot1() { } } public class Child: Parent { public override void Metot1() { } } 7

Örnek 2: Maaş Hesapla Personel +Isim: string #maas: decimal +Maas: decimal {Read-Only} <<Constructor>>+Personel() +MaasHesapla() Calisan Mudur <<Constructor>>+Calisan() +MaasHesapla() <<Constructor>>+Mudur() +MaasHesapla() 8

Örnek 2: Maaş Hesapla Senaryo 1: Personel maaş hesaplama ile ilgili Personel Temel sınıfında herhangi özel bir hesaplama yapılmıyor. Çalışan maaşları 1500 TL dir. Müdür maaşları 4000 TL dir. Çok biçimlilik kullanarak bu durumu implemente edelim. Form üzerinde nesneleri oluşturarak test ve DEBUG işlemi gerçekleştirelim. 9

Örnek 2: Maaş Hesapla Senaryo 1: 10

Örnek 2: Maaş Hesapla Senaryo 1: Calisan MaasHesapla() metodu çağırıldığında Temel Sınıf olan Personel in MaasHesapla() metodu çağrılıyor mu? Cevap: Hayır İhtiyaç olsaydı? 11

Örnek 2: Maaş Hesapla Senaryo 2: Personel maaş hesaplama ile ilgili Personel Temel sınıfında özel bir hesaplama yapılıyor. Maaş = ASGARIUCRET (1000)+ AILEGECIMINDIRIMI (500); Çalışan maaşları 1.5 kat. Müdür maaşları 3.5 kat. Çok biçimlilik kullanarak bu durumu implemente edelim. Form üzerinde nesneleri oluşturarak test ve DEBUG işlemi gerçekleştirelim. 12

Örnek 2: Maaş Hesapla Senaryo 2: 13

Örnek 3: Öğrenci ve Burslu Öğrenci Ogrenci +Isim: string +KrediSayisi: short #dersucreti: decimal +DersUcreti: decimal {Read-Only} <<Constructor>>+Ogrenci() +DersUcretiHesapla() BIRIMDERSUCRETI = 55.75. Sınıfı implemente edelim. 14

Örnek 3: Öğrenci ve Burslu Öğrenci 15

Örnek 3: Öğrenci ve Burslu Öğrenci Ogrenci +Isim: string +KrediSayisi: short #dersucreti: decimal +DersUcreti: decimal {Read-Only} <<Constructor>>+Ogrenci() +DersUcretiHesapla() BursluOgrenci +BursOrani: decimal +BursIndirimi: decimal {Read-Only} <<Constructor>>+BursluOgrenci() +DersUcretiHesapla() 16

Örnek 3: Öğrenci ve Burslu Öğrenci Ogrenci sınıfından BursluOgrenci sınıfını miras alınarak yaratalım. DersUcreti, Ogrenci sınıfı ile aynı yolla hesaplanmamaktadır. BursluOgrenci sınıfının DersUcreti özelliğinin değeri BursOrani özelliğine göre hesaplanmalıdır. Form üzerinde nesneleri oluşturarak test ve DEBUG işlemi gerçekleştirelim. BursIndirimi = DersUcreti * BursOrani 17

Örnek 3: Öğrenci ve Burslu Öğrenci 18

Örnek 3: Öğrenci ve Burslu Öğrenci 19

Örnek 4: İlk Kalıtım Örneği - Hatırla! Urun +No: int {Read-Only} +Adi: string +Aciklama: string +Fiyat: decimal <<Constructor>>+Urun() +Validasyon(): string +ISBN: int +Yazar: string Kitap <<Constructor>>+Kitap() +KitapValidasyon(): string +Marka: string +Model: string Telefon <<Constructor>>+Telefon() +TelefonValidasyon(): string 20

Örnek 4: İlk Kalıtım Örneği - Hatırla! 21

Örnek 4: İlk Kalıtım Örneği - Hatırla! Eski tasarım tam olarak doğru değil. KitapValidasyon() ve TelefonValidasyon() isimli metotları oluşturmaya artık gerek yok. Bunun yerine, Temel Sınıftaki Validasyon() metodu virtual yapılarak yavru sınıflarda ezilebilir ve NYP (OOP) çerçevesinde daha doğru bir tasarım gerçekleştirilir. 22

Temel Sınıfın Metotlarını Ezme (devam...) Kalıtılarak yaratılmış olan sınıfta sanal bir metodu ezmek zorunlu değildir; Kalıtılarak oluşturulmuş bu sınıf, temel sınıfın versiyonunu da kullanabilir. Yavru sınıf, temel sınıfın metotlarına base anahtar sözcüğü ile erişebilir. 23

Yararlanılan Kaynaklar Sefer Algan, HER YÖNÜYLE C#, Pusula Yayıncılık, İstanbul, 2003 Milli Eğitim Bakanlığı, «Nesne Tabanlı Programlama», 2012 Joyce Farrel, An Introduction to Object - Oriented Programming, Cengage Learning, 2011 http://www.algoritmaveprogramlama.com 24

İYİ ÇALIŞMALAR Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr 25