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

Benzer belgeler
İç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.

Kalıtım ( Inheritance ) BBS-515 Nesneye Yönelik Programlama

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

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

BİL-141 Bilgisayar Programlama I (Java)

Nesne Yönelimli Programlama

Dizi ( Array ) ve Dizgi ( String )

MOBIL UYGULAMA GELIŞTIRME

Erişim konusunda iki taraf vardır:

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

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 11: Sınıf (Class) Yapıları (Örnekler)

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

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

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

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

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

7. HAFTA. Erişim Belirleyiciler

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.

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

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

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

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

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

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

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

BMM3101 PROGRAMLAMA DİLLERİ

Nesne Yönelimli Programlama

Java da İstemci Tarafı Uygulamalar

BMH-303 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

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

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 8: Sınıf (Class) Yapılarına Giriş

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 4. Yrd.Doç.Dr.Hacer Karacan

Java String İşlemleri

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

Sunum İçeriği. Programlamaya Giriş

Programlama Dillerinde Kullanılan Veri Tipleri

BİL-142 Bilgisayar Programlama II

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:

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

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

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

Java da İşleçler, Ders #3 (4 Kasım 2009)

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

Java Programlama Güz Dönemi CLASS YAPISI

NESNE TABANLI PROGRAMLAMA

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

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

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Ders 8: Metotlar. barisgokce.com

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

Nesne Yönelimli Programlama

Ders 8 Konu Özeti ve Problemler

Nesneye Dayalı Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

D İ Z İ L E R A R R A Y S

public static int Toplam int x, int y

Klavyeden Basit Giriş/Çıkış İşlemleri

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

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

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

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

Nesne Yönelimli Programlama

Sınıfların Tekrardan Kullanılması. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 1

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

İki Yöntem. Komposizyon (Composition) Kalıtım (Inheritance)

YZM 2105 Nesneye Yönelik Programlama

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

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

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir.

#ifndef FATURA_H #define FATURA_H

JavaTürk. Java Kod İsimlendirme ve Şekil Standardı

C# Metotlar ve Metot Tanımlama

HSancak Nesne Tabanlı Programlama I Ders Notları

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Kalıtım (Inheritance)

Nesne Tabanlı Programlama

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

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Nesneye Dayalı Programlama

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

Decorator Tasarım Şablonu

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

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

BİLİŞİM TEKNOLOJİLERİ

// hataları işaret eden referans

C++ Dersi: Nesne Tabanlı Programlama

BTEP243 Ders 3. class Yazım Kuralı:

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA

Nesneye Yönelik Programlama (OOP) 7.Hafta

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Transkript:

Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama Ders #5 (18 Kasım 2009)

İçerik Geçen ders: Kalıtım ( inheritance ) Bu ders: Kalıtım ( inheritance ) tekrar ziyaret Java da super kullanımı Java da static ve final tanımları Kapsülleme ( encapsulation ) - 2 - BBS-515-DN05 / 2

Kalıtım ( Inheritance ) Tekrar Ziyaret

Java da Kalıtım: Örnek 2.1 class A { int i, j; void ijgoster () { System.out.println ( i ve j: + i + + j ); class B extends A { int k; void kgoster () { System.out.println ( k: + k); void topla () { System.out.println ( i+j+k: + (i+j+k)); - 4 - BBS-515-DN05 / 4

class SimpleInheritanceDemo { public static void main (String args[]) { A ustnesne = new A(); B altnesne = new B(); ustnesne.i = 10; ustnesne.j = 20; System.out.println( ustnesne içeriği: ); ustnesne.ijgoster(); System.out.println(); // bos satir yaz altnesne.i = 7; altnesne.j = 8; altnesne.k = 9; System.out.println( altnesne içeriği: ); altnesne.ijgoster(); altnesne.kgoster(); System.out.println(); // bos satir yaz Java da Kalıtım: Örnek 2.2 Çıktı: ustnesne içeriği: i ve j: 10 20 altnesne içeriği: i ve j: 7 8 k: 9 System.out.println( altnesne de i, j, ve k toplami: ); altnesne.topla(); altnesne de i, j ve k toplami: i+j+k: 24-5 - BBS-515-DN05 / 5

public class Bisiklet { Örnek 3 public int vites; public int hiz; // olusturucu metod public Bisiklet(int phiz, int pvites) { this.vites = pvites; this.hiz = phiz; // diger metodlar public void vitesdegistir(int yenideger) { this.vites = yenideger; public void fren(int paralik) { this.hiz -= paralik; public void hizlan(int paralik) { this.hiz += paralik; public class DagBisikleti extends Bisiklet { public int koltukyuksekligi; // olusturucu metod public DagBisikleti(int pyukseklik, int phiz, int pvites) { super(phiz, pvites); this.koltukyuksekligi = pyukseklik; // eklenen metod public void koltukyuksekliginidegistir(int yeniyukseklik) { this.koltukyuksekligi = yeniyukseklik; - 6 - BBS-515-DN05 / 6

Java da super Kullanımı

super Kullanımı super sözcüğünün iki tür kullanımı vardır: Üst sınıfın oluşturucusunu ( constructor ) çağırmak için kullanılır. Üst sınıfın bir elemanına (özelliğe veya yönteme) ulaşmak için kullanılır. - 8 - BBS-515-DN05 / 8

super Kullanımı: Oluşturucuyu Çağırmak class Kutu { Tümü private double genislik; özel private double yukseklik; tanımlı private double derinlik; Kutu (Kutu ob) { genislik = ob.genislik; yukseklik = ob.yukseklik; derinlik = ob.derinlik; Kutu (double g, double y, double d) { genislik = g; yukseklik = y; derinlik = d; Kutu () { genislik = -1; yukseklik = -1; derinlik = -1; class AgirKutu extends Kutu { double agirlik; AgirKutu (AgirKutu ob) { super (ob); agirlik = ob.agirlik; AgirKutu (double g, double y, double d, double a){ super (g,y,d); agirlik = a; AgirKutu () { super(); agirlik = -1; - 9 - BBS-515-DN05 / 9

super Kullanımı: Üst Sınıfın Bir Elemanına Ulaşmak (Genellikle üst sınıf ve alt sınıfta özellik ve yöntem isimleri aynı ise kullanılır.) class A { int i; class B extends A { int i; // A dakinin üzerine yazar B (int a, int b) { super.i = a; // A da tanimli i i = b; // B nin kendi özelligi olan i void goster () { System.out.println( Üst siniftaki i: + super.i); System.out.println( Alt siniftaki i: + i); class SuperDemo { public static void main(string args []) { B altob = new B (1,2); altob.goster(); ÇIKTI: Üst siniftaki i: 1 Alt siniftaki i: 2-10 - BBS-515-DN05 / 10

Java da static ve final Tanımları

static Tanımı - 1 Bir sınıfın nesnelerinden bağımsız olarak kullanılacak özellik veya yöntemi tanımlarken kullanılır. Sınıfın bir elemanı (özelliği veya yöntemi) static tanımlandıysa, o elemana sınıftan nesne oluşturmadan ulaşılabilir. Sinifadi.ozellik Sinifadi.yontem() Örnek: public static void main () - 12 - BBS-515-DN05 / 12

static Tanımı - 2 Bir sınıfın static olarak tanımlanmış değişkenleri genel kapsamlıdır. O sınıfın tüm nesneleri aynı değişkeni kullanır. Bir sınıfın static olarak tanımlanmış yöntemleri, ancak diğer static yöntemleri çağırabilir ve static veriye ulaşabilir; this ve super sözcüklerini kullanamaz. main() bloğu hariç static değişkenler ancak static tanımlı bir blok tarafından ilklendirilebilir. static tanımlı bir blok yalnız bir kez işletilir. - 13 - BBS-515-DN05 / 13

Bir kez işle etilir. class Statik1{ static int a=3; static int b; static void met (int x) { System.out.println ( x= + x); System.out.println ( a= + a); System.out.println ( b= + b); static { System.out.println ( Statik blok işletildi ); b= a*4; public static void main (String args []) { met (42); Çıktı: Statik blok işletildi. x=42 a=3 b=12 static Tanımı: Örnek class Statik2 { static int a = 42; static int b = 99; static void benicagir () { class Statik2Demo { System.out.println( a = +a); public static void main (String args []) { Statik2.beniCagir(); System.out.println( b = + Statik2.b); Çıktı: a=42 b=99-14 - BBS-515-DN05 / 14

C/C++ programlamada sabit tanımlamaya benzer. final Tanımı - 1 final olarak tanımlı bir değişkene yalnız bir kez değer atanabilir Değişkenin değeri, bir kere atandıktan sonra değiştirilemez. Örnek: final int FILE_NEW = 1; final int FILE_OPEN = 2; final tanımlı değişkenleri kodlarken büyük harf kullanılması önerilir. - 15 - BBS-515-DN05 / 15

final Tanımı - 2 Kalıtım kullanırken yöntemin üzerine yazmayı engellemek için kullanılır. Örnek: class A { final void met() { System.out.println ( Bu metot final tanımlanmıştır. ); class B extends A { void met() { // Hata: Geçersiz yöntem tanımı - 16 - BBS-515-DN05 / 16

final Tanımı - 3 Kalıtımı engellemek için de kullanılır. Örnek: final class A { // class B extends A { // Hata: Geçersiz sınıf tanımı - 17 - BBS-515-DN05 / 17

Kapsülleme ( Encapsulation )

Kapsülleme ( Encapsulation ) - 1 Bir sınıfın özellikleri ve işlevleri o sınıfa aittir ve detayları dışarıdan bilinmez. Özelliklere ve işlevlere sınıf izin verdiği ölçüde dışarıdan ulaşılır. Erişim için özellikler ve işlevler public, protected, private olarak tanımlanır. Dışarıdan ulaşan bir diğer sınıf, sadece sınıfın işlevini nasıl çağıracağını bilir; işlevin nasıl gerçekleştirildiğini bilmez ( encapsulated implementation ) Örnek: Araba motorunun çalışması (sürücü sadece anahtarı çevirir ve motor çalışır; motorun nasıl çalıştığı sürücüden gizlidir.) - 19 - BBS-515-DN05 / 19

Kapsülleme ( Encapsulation ) - 2 Kapsülleme özelliği aşağıdaki avantajları beraberinde getirir: Modülerlik: Bir nesnenin kaynak kodu diğerlerinden bağımsız olarak yazılıp yönetilebilir. Bilgi saklama: Bir nesne, kendisiyle iletişimde bulunan diğer nesneleri etkilemeden, sadece kendinin ulaşabileceği özellik ve yöntemlerini değiştirebilir. - 20 - BBS-515-DN05 / 20

Paket ( Package ) Kavramı Java da sınıf isimleri birbirinden farklı olmalıdır. Adres uzayında sınıf isimlerini tek ( unique ) yapmak için, paket ( package ) kavramı tanımlanmıştır. Örnek: java.lang.string java lang Paket ( Package ) String Sınıf ( Class ) - 21 - BBS-515-DN05 / 21

Erişim Kontrolü - 1 Kapsülleme ( encapsulation ) özelliği, veriyi onu değiştiren kodla ilişkilendirir. İyi tanımlı arayüzleri olan kara-kutular oluşturmayı hedefleriz. Kara-kutuların iç işleyişi dışarıdan müdahaleye açık olmamalıdır. Bu şekilde bir nesne ancak kendi özelliklerinin değerlerini erlerini değiştirebilir. Bir sınıfın özelliklerine ve yöntemlerine erişim hakkını tanımlamak için erişim belirticileri ( access specifiers ) kullanırız. - 22 - BBS-515-DN05 / 22

Erişim Kontrolü - 2 Java da kullanılan erişim belirticiler ( access specifiers ) şunlardır: public: Özellik veya yöntem, program içindeki herhangi bir koddan erişilebilir. private: Özellik veya yöntem, ancak o sınıfın içindeki herhangi bir koddan erişilebilir. protected: Özellik veya yöntem, alt-sınıfların içindeki veya aynı paketteki başka bir sınıfın içindeki herhangi bir koddan erişilebilir. Ana yöntem için public erişim belirtici kullanılır. Örnekler: public int i; private double j; private int met (int a) {.. - 23 - BBS-515-DN05 / 23

Erişim Belirticiler ( Access Specifiers ) Private Belirtici Protected Public Yok Ayni sinif Evet Evet Evet Evet Ayni paket ve alt-sinif Ayni paket ve alt-sinif degil Farkli paket ve alt-sınıf Farkli paket ve alt-sinif degil Hayır Evet Evet Evet Hayır Evet Evet Evet Hayır Hayır Evet Evet Hayır Hayır Hayır Evet - 24 - BBS-515-DN05 / 24

Özellik Yazma ( Setter ) ve Özellik Okuma ( Getter ) Yöntemleri Erişim belirtici ( access specifier ), özellik için erişilebilirliği belirler (public/protected/private). private int id; public String name; // diğer sınıflar göremez. // diğer sınıflar görebilir. Bir sınıfın erişilemez ilemez özelliklerine ulaşmak için, özellik yazma ( setter ) ve özellik okuma ( getter ) yöntemleri kullanılır. Özellik yazma ( setter ) yöntemi: Sınıfın erişilemez özelliğine dışarıdan yazmayı sağlar. Özellik okuma ( getter ) yöntemi: Sınıfın erişilemez özelliğini dışarıdan okumayı sağlar. - 25 - BBS-515-DN05 / 25

Öğrenci sınıfını Java da tanımlayın. Sınıf Çalışması Özelliklerini farklı erişim belirticilerle tanımlayın. Özellik yazma ( setter ) ve özellik okuma ( getter ) yöntemlerini tanımlayın. Çalıştırılabilir başka bir sınıf içinde öğrenci nesnesi oluşturun. Nesnenin özelliklerine değerler atayın ve sonra değerleri okuyarak yazdırın. - 26 - BBS-515-DN05 / 26

Örnek public class Ogrenci { private int no; public String ad, adres; public Ogrenci() { no = 0; ad = ; adres = ; public void setno(int pno) { no = pno; public int getno(){ return this.no; public void bilgiyaz(){ System.out.println (no +, + ad +, + adres); public class Test { public static void main(string args[]) { // nesne degiskenini tanimla Ogrenci ogr; // nesneyi yarat ogr = new Ogrenci(); // nesne özelliklerini ilklendir ogr.setno(836); ogr.ad = Ayşe ; ogr.adres = Ankara ; // nesne bilgisini yazdir ogr.bilgiyaz(); // nesne tanimlayiciyi yazdir System.out.println(ogr.getNo()); - 27 - BBS-515-DN05 / 27

Sağda gördüğünüz araç tür ağacını örnek alarak, tek seviyeli kalıtım sağlayan 3 araç seçin. Bir üst sınıf, iki alt sınıf Sınıfların özellik ve yöntemlerini de gösteren kalıtım ağacını oluşturun (UML gösterimi ile). Özellik yazma ( setter ) ve özellik okuma ( getter ) yöntemlerini kullanın. Sınıfları Java da kodlayın. Üst ve alt sınıflar arasında yöntemin üzerine yazmayı ( method overriding ) örnekleyin. Özelliklerin değerlerini yazdıran yöntemleri tanımlayabilirsiniz. Sınıfları oluşturan ayrı bir demo sınıfı yazarak sınıflardan nesneler oluşturun ve yöntemlerini çağırarak özellikleri konsolda görüntüleyin. Uzay Aracı Ödev 3: Günleme Hava Aracı Araç İnsan gücüyle çalışan Kara Aracı 2 tekerlekli Su Aracı Motor gücüyle çalışan Yolcu Aracı Otomobil 4 tekerlekli GM Ford Diğer Teslim: 24.Kasım.2009 24:00 e kadar atarhan@hacettepe.edu.tr adresine e-posta ile Kargo Aracı - 28 - BBS-515-DN05 / 28