NESNE TABANLI PROGRAMLAMA

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

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

Nesne Yönelimli Programlama

BİL-141 Bilgisayar Programlama I (Java)

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

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

Kalıtım (Inheritance)

Sunum İçeriği. Programlamaya Giriş

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

Ders 8 Konu Özeti ve Problemler

Nesne Yönelimli Programlama

YZM 2105 Nesneye Yönelik Programlama

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

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2.

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

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

YZM 2105 Nesneye Yönelik Programlama

Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama

1. SINIFLAR Sınıf (Class) Mantığı

C++ Dersi: Nesne Tabanlı Programlama

Nesne Tabanlı Programlama. Ders Notları

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

Nesneye Dayalı Programlama

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

public static int Toplam int x, int y

BİL-142 Bilgisayar Programlama II

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

3. NESNE TABANLI PROGRAMLAMANIN PRENSİPLERİ

Nesne Yönelimli Programlama

BTEP243 Ders 3. class Yazım Kuralı:

C++ Dersi: Nesne Tabanlı Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

C# Metotlar ve Metot Tanımlama

1. HAFTA TEMEL KURULUM İŞLEMLERİ ve NESNE TABANLI PROGRAMLAMA KAVRAMLARI

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

1 PROGRAMLAMAYA GİRİŞ

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

YZM 2105 Nesneye Yönelik Programlama

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

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

Programlama Dillerinde Kullanılan Veri Tipleri

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

Java Programlama Güz Dönemi CLASS YAPISI

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

YZM 2105 Nesneye Yönelik Programlama

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

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

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.

Operatörlerin Aşırı Yüklenmesi

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

Lecture 11: Generics

Nesne Yönelimli Programlama

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

Bölüm 9. Altprogramlar ISBN

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

NESNE TABANLI PROGRAMLAMA Temel Kavramlar

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

4.1. Grafik Sihirbazını kullanarak grafik oluşturma

MOBIL UYGULAMA GELIŞTIRME

Göstericiler (Pointers)

Ders 8: Metotlar. barisgokce.com

Nesneye Dayalı Programlama

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

ALGORİTMA VE PROGRAMLAMA II

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

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

PROGRAMLAMAYA GİRİŞ DERS 2

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Sınıf Nesne Kavramları C# Bileşenleri Özellikler, Olaylar, Metotlar

C++ Dersi: Nesne Tabanlı Programlama

Üst Düzey Programlama

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

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

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

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

NESNEYE YÖNELİK PROGRAMLAMA. Yrd.Doç.Dr. Zeynep ORMAN

HSancak Nesne Tabanlı Programlama I Ders Notları

DIV KAVRAMI <style> position: absolute

NESNEYE YÖNELİK 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 Dayalı Programlama

YZM 2105 Nesneye Yönelik Programlama

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

NESNE TABANLI PROGRAMLAMA

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

YZM 2105 Nesneye Yönelik Programlama

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

BİL-142 Bilgisayar Programlama II

Android Studio TextView ve EditText Öğr.Gör. Utku SOBUTAY

Öğr. Gör. Serkan AKSU 1

Görsel Programlama (Visual Programming) 2.Hafta

Üst Düzey Programlama

7. HAFTA. Erişim Belirleyiciler

NESNE MODELLERİ : SINIFLAR

Hafta 13 Fonksiyonlar

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

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

Transkript:

NESNE TABANLI PROGRAMLAMA Öğr. Gör. Utku SOBUTAY

İÇERİK 2 Nesne Tabanlı Programlama Sınıf, Nesne Kavramları Kapsulleme, Kalıtım ve Çok Biçimlilik Kavramları

Nesne Tabanlı Programlama

NESNE TABANLI PROGRAMLAMA 4 Nesne Tabanlı Programlamanın Ortaya Çıkışı: Yazılım projelerinde program kodlarının 10000 lerce satırı bulması, kod karmaşasından kurtulmak için yeni yöntemler arayışı sonucunda Nesne tabanlı programlama (Object Oriented Language) ortaya çıkmıştır. Nesne tabanlı programlamanın ortaya çıkışından önce, onbinlerce kod satırı arasından değiştirmek istediğimizin bulunması veya hatalı kodların tespit edilmesi günlerce, saatlerce sürmekteydi. Nesne tabanlı programlama ile birlikte, değiştirilmek istenen kod belirli bir sınıf yapısı içerisinde bulunduğundan dolayı tespit edilmesi ve değiştirilmesi çok daha kolay olmuştur.

NESNE TABANLI PROGRAMLAMA 5 Programlamaya Katkısı: Karmaşık Yazılım Projelerinin Oluşturulmasını sağlamıştır. Karmaşık Yazılım Projelerinde Yazılımın bakımını, hataların tespit edilmesini ve düzeltilmesini kolaylaştırmıştır. Yazılım içerisinde yazılan kodların tekrar tekrar kullanılmasını sağlamıştır (Code-Reusability). Yazılımların kod sayılarında azalma meydana gelmiştir, daha az kodla aynı işlerin yapılabileceği anlaşılmıştır. Yazılım şirketlerinin kod maliyetini azaltmıştır. Kod sayısı azaldığı için yazılımların lisans ücretlerinde düşüş meydana gelmiştir. Yazılım sektörüne canlılık gelmiştir ve rekabetin gelişmesine yardımcı olmuştur.

NESNE TABANLI PROGRAMLAMA 6 Sınıf Nesne Örneği: Şekil-1 de Ağaç Sınıfından oluşturulmuş iki ağaç nesnesi gözükmektedir. Ağaç Sınıfının Yükseklik özelliği vardır. İki ağaç nesnesinde de yükseklik özelliği ağacın cinsine göre tanımlanabilir.

NESNE TABANLI PROGRAMLAMA 7 Nesne Tabanlı Programlama Nedir? Gerçek hayattaki var olan bir takım olguların programlamaya aktarılmasındaki yeni yaklaşımdır. Klasik Programlamada; veri, veri tipleri, fonksiyonlar, prosedürler bulunmaktadır. Fonksiyonlar verileri işleyerek sonuçlar elde etmektedir. Nesne Tabanlı Programlamada; veri, veriyi işleyip sonuç döndüren fonksiyonlar bulunmaktadır. Fark ise; gerçek hayatta gördüğümüz durumların iyi gözlenip yazılım dünyasına aktarılmasıdır.

NESNE TABANLI PROGRAMLAMA 8 Programcı gerçek dünya üzerindeki varlıkları soyutlama ve modelleme ile algılar ve gerçekleme yoluyla da bilgisayar ortamına aktarır. Soyutlama; varlıkların bir çok özelliğinden istenmeyen özelliklerinin elenmesidir (tükenmez kalemin içerisindeki mürekkebin markası bizim için önemli değildir. Modelleme; varlıkların bir düzen biçiminde toparlanması, özelliklerinin belirlenmesidir. Gerçekleme; programcı tarafından soyutlama ve modelleme sonucu oluşanların doğruluğunu kontrol edilip bilgisayara aktarılmasıdır.

Sınıf, Nesne Kavramları

SINIF, NESNE KAVRAMLARI 10 Sınıf: İçerisinde verileri ve bu verileri işleyecek çeşitli fonksiyonları, metotları barındıran nesne oluşturmaya yarayan önceden yazılmış özel yapıdır. Sınıf oluşturulurken, gerçek dünyadaki varlıkların özellikleri sınıf içerisinde değişken olarak tanımlanır Sınıf oluşturulurken, gerçek dünyadaki varlıkların yetenekleri, işlevleri ve yapabildikleri sınıf içerisinde fonksiyon, metot olarak tanımlanır. Nesne: Önceden yazılmış, oluşturulmuş sınıflar kullanılarak oluşturulan birbirinden farklı özel yapılardır. Sınıf kullanılarak oluşturulan her bir nesnenin sınıfın değişkenlerine ve fonksiyonlarına bağlı olarak kendi özellikleri ve işlevleri vardır.

SINIF, NESNE KAVRAMLARI 11 Gerçek Dünyadaki Ütü Varlığı için; Ütünün Özellikleri; Marka Model Renk Çalıştığı Elektrik Voltajı Ütüleyebildiği Kumaş Türü Ütü ile Yapılabilecek İşler; Ütü Isıtılabilir() Ütüleme Yapılabilir() Ütü Soğutulabilir() Ütü ile ilgili program yazıyoruz ve bunu nesne tabanlı programlama kullanarak yaparsak... Ütü Sınıfımız olmak zorunda (class)... Ütü Sınıfında ütünün özelliklerinin tanımlandığı değişkenler ve Ütü ile yapılabilecek işlerin tanımlandığı fonksiyonlar bulunmaktadır. Bu sınıf kullanılarak farklı özelliklere sahip çok sayıda farklı ütüler oluşturulabilmektedir. Yani; her bir ütü için tekrar tekrar marka, model, renk v.b. gibi veri değişkenlerinin oluşturulması, fonksiyonların tanımlanması gerekmemektedir, sadece değerleri girilir.

SINIF, NESNE KAVRAMLARI Sınıf Nesneler Araba varlığı, nesne tabanlı programlama ile oluşturulmak istenirse; Araba sınıfı oluşturulması gerekmektedir (class)... Araba sınıfının Marka, Model gibi iki değişkeni bulunmaktadır ve Korna Çal ve FarYak şeklinde iki fonksiyonu bulunmaktadır. Bunlar, araba sınıf oluşturulurken tanımlanırlar, araba sınıfının özellikleridir. Araba sınıfından oluşturulan; Önden Çeker, Arkadan Çeker ve Dört Çeker nesneleri; Marka ve Model değişkenlerine, Korna Çal ve Far Yak fonksiyonlarına sahip olurlar.

Kapsülleme, Kalıtım ve Çok Biçimlilik Kavramları

Kapsülleme, Kalıtım ve Çok Biçimlilik Kavramları 14 Nesne tabanlı programlamanın Sınıf ve Nesne olmak üzere kavramları bulunduğu gibi, Kapsülleme, Kalıtım ve Çok Biçimlilik gibi bir takım özellikleri de bulunmaktadır. Bu özellikler, sınıf ve nesnelere bazı yetenekler kazandırmaktadır. Nesne tabanlı programlamanın üç önemli özelliği vardır; Kapsülleme / Depolama (Encapsulation) Kalıtım / Miras (Inheritance) Çok Biçimlilik (Polymorphism)

Kapsülleme / Depolama (Encapsulation)

Kapsülleme / Depolama (Encapsulation) 16 Verilerin, değişkenlerin, fonksiyonların v.b. sınıf öğelerinin, gizlenmesine veya bir grup içinde toplanmasına kapsülleme denir. Kapsülleme, sınıf içinde kullanılan verilerin fonksiyonların v.b. dışarıdan herhangi bir etki ile doğrudan değiştirilmesini engeller. Böylece, isteğimiz dışında yapılacak değer atamalarının ve fonksiyon çağırmalarının önüne geçilmiş olunur. Sınıf içindeki verilerin izinsiz değiştirilmesini engeller. Fonksiyonların izinsiz erişilmesini engeller.

Kapsülleme / Depolama (Encapsulation) 17 Kapsülleme Örneği; Saat içerisinde karmaşık bir çok parça mevcuttur. Bu parçaların hepsinin farklı görevleri olabilir. Bizim için önemli olan bu saatin doğru olarak bize zamanı göstermesidir. İçindeki parçaların ve bu parçaların işlevlerinin bir önemi yoktur, bilmesek de olur. Kapsülleme bize nesne tabanlı programlamada bazı değişken ve fonksiyonların kullanıcıdan gizlenmesini sağlamaktadır.

Kapsülleme / Depolama (Encapsulation) 18 Kişi sınıf dışında tanımlanan nesnelerde doğrudan erişilemez Kapsülleme Java Örneği; Kişi sınıfı tanımlanırken ad ve soyad değişkenleri private olarak belirtilmiştir. Bu şekilde tanımlanan değişlenlere veya fonksiyonlara sınıf dışarısından doğrudan müdahale edilemez Fakat, sadece public olarak tanımlanan setad, setsoyad, getad, getsoyad fonksiyonları yardımıyla değiştirilebilir veya erişilebilir. Böylece, ad ve soyad değişkenleri dış ortamdan kapsülleme yardımıyla korunmuş olur.

Kalıtım / Miras (Inheritance)

Kalıtım / Miras (Inheritance) 20 Nesne tabanlı programlamada, günlük hayattaki kullanımına benzer anlamdadır. Örneğin; ben annemin gözlerini almışım... ben annemin gözlerini almışım... denildiğin de tıbbi olarak siz annenizden ve babanızdan kalıtımsal olarak ilgili özelliklerini almışsınızdır.

Kalıtım / Miras (Inheritance) 21 Kalıtım; önceden oluşturulan bir sınıf kullanılarak başka sınıfların türetilmesidir, oluşturulmasıdır. Bir sınıftan türetilen her bir sınıf, türediği sınıfın özelliklerini devralmaktadır. Yani, yeni sınıf türetildiği sınıfın özelliklerini miras almaktadır... Ayrıca türetilen yeni sınıf, kendine has değişkenlere ve fonksiyonlara da sahip olabilir Sonucunda; türetilen yeni sınıf, türetildiği sınıfın verilerine, değişkenlerine, fonksiyonlarına v.b. erişebilir... Fakat bu erişimin bir sınırlandırılması vardır, bu da kapsülleme yoluyla olabilir.

Kalıtım / Miras (Inheritance) 22 Ralli, Ticari, Özel ve spor otomobillerinin ortak bir takım özellikleri var. Bunlar; Motorunun olması Tekerleklerinin olması Viteslerinin olması Fakat, her bir aracında kendine has özellikleri de vardır. Örneğin; Ralli aracının güvenlik bariyerinin olması Sürücülerinin kasklı takması Her bir ralli aracı aynı zamanda otomobildir... Otomobil sınıfından; Ralli, Ticari, Özel ve Spor otomobil yeni sınıfları türetilmiştir. Bu türetilen sınıfların hepsi; otomobil sınıfının sahip olduğu motorunun olması, tekerleklerinin olması, viteslerinin olması gibi özelliklere de sahiptir. Ayrıca; Wrc, GrupN sınıfları Ralli sınıfından kalıtım ile türetilmiştir. Buna göre; Wrc Sınıfı bir Ralli aracıdır aynı zamanda da bir otomobildir...

Kalıtım / Miras (Inheritance) 23 Student ve Employee sınıfları; Person sınıfından kalıtım yoluyla türetilmiştir. Student ve Employee sınıfları, Person sınıfının sahip olduğu firstname, lastname ve dateofbirth değişkenlerini ve age() fonksiyonunu kalıtım yoluyla alıp kullanabilir. Ayrıca; Student sınıfının kendine ait; yearofstudy, faculty gibi değişkenleri ve insertscore(), acceptsemester() gibi fonksiyonları da bulunmaktadır. Yine Employee sınıfının kendine ait; jop, salary, company gibi değişkenleri ve netsalary(), changesalary() gibi fonksiyonları da bulunmaktadır. Kısacası; Student ve Employee hem kalıtım yoluyla türetildiği Person sınıfının özelliklerine hem de kendilerine has özelliklere sahiptir.

Kalıtım / Miras (Inheritance) Dikdörtgen sınıfı tanımlanan ana sınıftır. En, boy değişkenlerine ve alan hesabı için getalan() fonksiyonuna sahiptir. 24 Kare sınıfı Dikdörtgen sınıfından türetilmiştir. Kalıtım yoluyla en,boy değişkenleri ve getalan() fonksiyonunu kullanabilir. Yukarıdaki Java kodunda, Dikdörtgen sınıfından Kare sınıfı kalıtım yoluyla türetilmiştir. Bu sadece göz aşinalığı için bir örnektir, ilerleyen derslerde daha ayrıntılı olarak gösterilecektir

Çok Biçimlilik (Polymorphism)

Çok Biçimlilik (Polymorphism) 26 Bir fonksiyonun, metodun farklı veriler, farklı nesneler veya farklı ortamlarda farklı sonuçlar üretmesine çok biçimlilik denir. Çok biçimlilik aşırı yükleme (overload) denilen bir yöntem ile yapılabilir. Aşırı yükleme; bir fonksiyona farklı durumlarda farklı verilerle farklı sonuçlar elde etmesini sağlamaktır. Aynı isimde; farklı parametreler alan fonksiyonlar yazılabilir. Örneğin; DortgenAlani(int kenar_uzunluğu){..} DortgenAlani(int genişlik, int yukseklik){ } Fonksiyon isimleri aynı, fakat parametreleri ve içerisinde yaptığı işler farklıdır.

Çok Biçimlilik (Polymorphism) 27 Öğretmen; aynı Konuşmak fonksiyonunu kullanarak, Sınıfta - Yüksek Sesle, Odada - Normal Ses Tonuyla, Konferansta - Kısık Sesle konuşabilir. Bu çok biçimliliğe güzel bir örnektir; tek bir konuşmak fonksiyonu ile bulunduğu ortama göre farklı tonlarda konuşulabilir.

Çok Biçimlilik (Polymorphism) 28 Yukarıda verilen Karakök fonksiyonu; int (integer) değerler aldığında, integer sonuç üretir. Double değerler aldığında, double sonuç üretir. Long değerler aldığında ise, long sonuç üretir. Tek bir Karakök fonksiyonu çok biçimlilik ile birden çok işi yapacak hale gelir böylece farklı isimlerde fonksiyon oluşturmaya gerek kalmaz, karışıklık önlenir.

Çok Biçimlilik (Polymorphism) 29 Şekil sınıfında alanbul() fonksiyonu tanımlanmıştır. Şekil sınıfından türetilen Dikdörtgen ve Daire sınıfları içerisinde alanbul() fonksiyonunun içeriği farklı sonuçlar verecek şekilde yeniden yazılmıştır. Aynı alanbul() fonksiyonu farklı sınıflar içerisinde farklı işlevlere sahiptir. Çok biçimliliğin karmaşık biçimi budur...

Çok Biçimlilik (Polymorphism) 30 Çok Biçimlilik Java Fonksiyon Örneği; public int alanhesapla(int kenar){ return kenar*kenar; } public int alanhesapla(int en,int boy){ return en*boy; } public double alanhesapla(double en,double boy){ return en*boy; } Verilen örnekte alanhesapla() fonksiyonu 3 kez yazılmıştır ve parametreleri 3 yazımda da farklıdır. İlk yazımda int (integer) değişken tipinde kenarı verilen karenin alanını hesaplamaktadır. İkinci yazımda int (integer) değişken tipinde en ve boyu verilen dikdörtgenin alanını hesaplamaktadır. Üçüncü yazımda double değişken tipinde en ve boyu verilen dikdörtgenin alanını hesaplamaktadır. Tek bir alanhesapla() fonksiyonunu 3 farklı işlev kazandırılmıştır. Bu Çok Biçimlilik özelliğidir.

GENEL BAKIŞ 31 Nesne tabanlı programlama, standart programlamaya göre bir çok farklı özelliğe ve bir çok kolaylığa sahiptir. Tek bir sınıf içerisinde değişkenler ve fonksiyonlar oluşturarak, aynı sınıfın özelliklerini taşıyan birden fazla nesne oluşturulabilir. Örneğin; Tekerlek sınıfı oluşturulur, Tekerlek sınıfının; boyutları, hava basıncı, diş sayısı v.b. gibi değişkenleri bulunur. Tekerlek sınıfından, tekerler sınıfının özelliklerini taşıyacak, kamyon tekerleği, araba tekerleği, traktör tekerleği, uçak tekerleği gibi nesneler oluşturulabilir. Hepsinin boyutlar değeri, hava basıncı değeri, dış sayısı v.b. Değerleri bulunabilir.

Ders Bitti. Dinlediğiniz için teşekkürler