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ı

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

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

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

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

YZM 2105 Nesneye Yönelik Programlama

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

YZM 2105 Nesneye Yönelik Programlama

Nesne Yönelimli Programlama

YZM 3215 İleri Web Programlama

YZM 2105 Nesneye Yönelik Programlama

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

public static int Toplam int x, int y

BİL-141 Bilgisayar Programlama I (Java)

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

YZM 3215 İleri Web Programlama

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

Sunum İçeriği. Programlamaya Giriş

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

Kalıtım (Inheritance)

Ders 8 Konu Özeti ve Problemler

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

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

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA II

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA I

YZM 2116 Veri Yapıları

C++ Dersi: Nesne Tabanlı Programlama

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

YZM 3215 İleri Web Programlama

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

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

3. Bölüm Soyut Sınıflar (Abstract Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

YZM 3215 İleri Web Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

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

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA II

Nesne Yönelimli Programlama

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

MOBIL UYGULAMA GELIŞTIRME

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

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA I

NESNE TABANLI PROGRAMLAMA

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

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

ALGORİTMA VE PROGRAMLAMA I

HSancak Nesne Tabanlı Programlama I Ders Notları

BTEP243 Ders 3. class Yazım Kuralı:

YZM 2105 Nesneye Yönelik Programlama

Nesneye Dayalı Programlama

YZM 2116 Veri Yapıları

Ders 8: Metotlar. barisgokce.com

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 Dayalı Programlama

Nesneye Yönelik Programlama (OOP) 7.Hafta

BİL-142 Bilgisayar Programlama II

YZM 2116 Veri Yapıları

ALGORİTMA VE PROGRAMLAMA II

Nesneye Dayalı Programlama

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

ALGORİTMA VE PROGRAMLAMA II

Nesne Yönelimli Programlama ve Kalıtım

Görsel Programlama-I (Visual Programming) 2.Hafta

YZM 3215 İleri Web Programlama

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

ALGORİTMA VE PROGRAMLAMA II

Operator Aşırı Yükleme (Operator OverLoading)

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

YZM 2105 Nesneye Yönelik Programlama

Nesne Yönelimli Programlama

Genel Programlama II

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

7. HAFTA. Erişim Belirleyiciler

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

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER METOTLAR

YZM 2116 Veri Yapıları

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

Hafta 13 Fonksiyonlar

C# Metotlar ve Metot Tanımlama

YZM 2116 Veri Yapıları

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

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

Java Dersi. Altuğ Bilgin Altıntaş

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

3. NESNE TABANLI PROGRAMLAMANIN PRENSİPLERİ

YZM 2105 Nesneye Yönelik Programlama

C++ Dersi: Nesne Tabanlı Programlama

Nesne Tabanlı Programlama. Ders Notları

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.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

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 - 7 Abstract (Soyut Sınıflar) Bu bölümde; Soyut Sınıfların Oluşturulması Soyut Sınıfların Kullanımı ile ilgili konular anlatılacaktır. 2

Soyut Sınıflar (Abstract Class) 3

Soyut Sınıflar Kalıtım kavramını anladıktan sonra, sınıfların yaratılması daha da kolaylaşır. Child bir sınıf oluşturduğunuzda, genel özellikleri miras alınır ve sonrasında sınıfa gereken yeni, spesifik özellikler kazandırılır. Örneğin; Ressam ile Sair sınıfları Sanatci sınıflarının daha da özelleşmiş halidir. Bu sınıflar, Sanatci sınıfının erişilebilen tüm özelliklerini ve metotlarını barındırmakla beraber spesifik özellikleri de barındırırlar. 4

Soyut Sınıflar (devam...) Temel sınıfları düşünmenin bir yolu, yavru sınıfların ortak özelliklerinin tümünü düşünmek olabilir. Genişletilmiş sınıf incelendiğinde, ebeveyn sınıfının daha genel olduğu gözlenir. Bazen yavru sınıfların daha genel bir örneğini oluşturmak için ebeveyn sınıf oluşturulur. Örneğin, önceden bir Sanatci yaratmamış olabilirsiniz; herbir Sanatci bir Ressam ın, Sair in ya da Muzisyen in daha genel halidir. 5

Soyut Sınıflar (devam...) Sonradan genişletilmek üzere yaratılan fakat kendisinden nesne oluşturulmayan sınıflara soyut sınıf (abstract class ) denir. Soyut sınıfları tanımlarken abstract anahtar kelimesi kullanılır. Soyut sınıflar da normal sınıflar gibi özellikler ve metotlar içermektedir. Normal sınıflardan farklı olarak bu sınıflardan new operatörünü kullanarak nesne yaratılamaz. Bunun yerine, soyut sınıflar bir ana sınıf sağlar. Soyut sınıflar genellikle soyut metotlar (abstract methods) içerirler. Soyut bir metot hiçbir metot ifadesi içermez; bu sınıftan türetilen sınıflar, bu metotları ezmelidir. 6

Soyut Sınıflar (devam...) Soyut bir metodun başlığında, isteğe bağlı erişim belirleyicisi, abstract anahtar kelimesi, istenilen metodun tipi ve adı bulunur: public abstract string Analiz(); Soyut metotlarda kod gövdesi bulunmaz. Bu metotların gövdeleri kalıtılan sınıfta tanımlanır. Soyut bir sınıftan miras alınarak, yeni bir sınıf yaratıldığında, yeni sınıfta override anahtar kelimesini kullanarak soyut metotların gövdeleri oluşturulmalıdır. 7

Soyut Sınıflar (devam...) virtual anahtar kelimesi ile tanımlanan metodun yavru sınıfta ezilmesi zorunlu değildir. Fakat abstract tanımlanmış metot ezilmelidir. 8

Örnek1: Hayvan Soyut Sınıfının Yaratılması Hayvan +Adi: string {Read-Only} +Cins: string <<Constructor>>+Hayvan(string adi) <<Constructor>>+Hayvan() +SesCikar(): string {abstract} Kopek <<Constructor>>+Kopek(string kopekadi) +SesCikar(): string 9

Örnek1: Hayvan Soyut Sınıfının Yaratılması 10

Örnek1: Hayvan Soyut Sınıfının Yaratılması 11

Örnek1: Hayvan Soyut Sınıfının Yaratılması Form üzerinde bir Kopek nesnesi yaratalım. Kopek bilgilerini ekranda göstermek için bir form üzerinde metot oluşturalım. 12

Soyut Sınıflar (devam...) Soyut bir metot tanımlamadan da soyut bir sınıf oluşturulabilir fakat soyut sınıf oluşturulmadan soyut bir metot oluşturulamaz. Child sınıfında override edilmesi gereken metot kendi tanımına sahipse, bu metot virtual olarak tanımlanır. Eğer kendine ait bir tanım/gövde yoksa abstract olarak tanımlanır. Örnekteki; Kopek sınıfında Konus() metodu ezilmek zorundadır. Bu metodun içerisinde herhangi bir işlem yapılmayabilir fakat bu metot mutlaka olmalıdır. Bu metodu ezerken override anahtar kelimesi kullanılır. 13

Örnek1: Kedi Sınıfının Yaratılması Hayvan +Adi: string {Read-Only} +Cins: string <<Constructor>>+Hayvan(string adi) <<Constructor>>+Hayvan() +SecCikar(): string {abstract} Kedi <<Constructor>>+Kedi(string kediadi) +SecCikar(): string 14

Örnek1: Kedi Sınıfının Yaratılması 15

Örnek1: Kedi Sınıfının Yaratılması Form üzerinde bir Kedi nesnesi yaratalım. Kedi bilgilerini ekranda göstermek için bir form üzerinde metot oluşturalım. 16

Örnek1: Kedi Sınıfının Yaratılması İki metot arasında ne fark var? Daha iyi bir çözümü olan var mı? 17

Örnek1: Kedi Sınıfının Yaratılması Kedi ve Kopek sınıfından yaratılmış nesneler Hayvan parametresi alan HayvanBilgiGoster() metoduna aktarılabilirler. Bu yönteme upcast denir. Ortaya konulan yazılım tasarım prensibine LSP (Liskov yerine geçme) prensibi denilir. 18

Örnek1: Kedi Sınıfının Yaratılması 19

Soyut Sınıflar Özet Soyut sınıflar, birden fazla child sınıf için ortak özelliklerin ve/veya metotların ihtiyaç olduğu durumlarda ortak kısımları toparlama amacı ile kullanılabilirler. Soyut sınıf kullanımları önemlidir, ancak zorunlu değildir. Soyut sınıftan nesne türetilemez. Soyut sınıflar private olamazlar. Soyut sınıflar sealed olamazlar. 20

Uygulama Örneği: Geometri Hesaplamalar GeometriHesaplamalar isimli soyut bir sınıf yaratınız. #cevre: double +Cevre: double {Read-Only} #alan: double +Alan: double {Read-Only} GeometriHesaplamalar +CevreHesapla(double deger1, double deger2): {abstract} +AlanHesapla(double deger1, double deger2): {abstract} Kare, Dikdortgen ve Cember sınıflarını bu sınıftan türetiniz. Form üzerinde nesnelerini oluşturunuz. 21

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 22

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