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

Benzer belgeler
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

Java Programlama Dili

BMM3101 PROGRAMLAMA DİLLERİ

Nesne Yönelimli Programlama

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

Görsel Programlama. Temel Veri Tipleri, Değişkenler, Operatörler, Akış Kontrolü, Sınıflar, Metotlar, Paketler ve JavaDoc

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

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

BTEP243 Ders 3. class Yazım Kuralı:

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

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

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

BİL-141 Bilgisayar Programlama I (Java)

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

Erişim konusunda iki taraf vardır:

7. HAFTA. Erişim Belirleyiciler

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

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

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

Kalıtım (Inheritance)

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

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

public static int Toplam int x, int y

MOBIL UYGULAMA GELIŞTIRME

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

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

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

C++ Dersi: Nesne Tabanlı Programlama

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;

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Programlama Dillerinde Kullanılan Veri Tipleri

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

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

YZM 2105 Nesneye Yönelik Programlama

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

Nesneye Yönelik Programlama (OOP) 7.Hafta

JAVADA DİZİ İŞLEMLERİ

11- FONKSİYONLAR (FUNCTIONS)

BMH-303 Nesneye Yönelik Programlama

NESNEYE YÖNELİK PROGRAMLAMA

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.

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

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

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

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

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

Nesne Tabanlı Programlama

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

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

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

Sunum İçeriği. Programlamaya Giriş

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

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

Nesne Yönelimli Programlama

Java String İşlemleri

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.

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 7

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

// hataları işaret eden referans

Java Class Yapısında Finalize Metotunun Kullanımı

Nesne Yönelimli Programlama

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

Java da İstemci Tarafı Uygulamalar

BİL-141 Bilgisayar Programlama I (Java)

C# Metotlar ve Metot Tanımlama

Dizi ( Array ) ve Dizgi ( String )

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

Statik veri üyeleri sınıf dosyası içerisinde, ancak sınıf bildirimi dışında başlatılmalıdır. Statik üye fonksiyonları

C++ Dersi: Nesne Tabanlı Programlama

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

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

C++ Dersi: Nesne Tabanlı Programlama

BİL-142 Bilgisayar Programlama II

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

RSA ANAHTAR DAĞITIMI VE RSA İLE DİJİTAL İMZA OLUŞTURMA

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

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

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

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

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

Nesneye Dayalı Programlama

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

BMH-303 Nesneye Yönelik Programlama

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

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

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

4.Hafta. this Anahtar Sözcüğü

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

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

Nesne Yönelimli Programlama

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

Lambda İfadeleri (Lambda Expressions)

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

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Transkript:

Görsel Programlama Kalıtım, Temel/Alt Sınıf, Temel/Alt Sınıf Tip Dönüşümleri, Temel Sınıf Yapıcıları, super Anahtar Kelimesi, Sınıf Üyesi Görünürlüğü, Statik Üyeler ve Final Üyeler

Sınıflar Programcı tarafından tanımlanan veri tipleridir Nesne: sınıfın bir örneğidir Sınıf tanımı, sınıfın adında bir Java dosyası içerisinde yapılır: <SınıfAdı>.java Sınıf adları geleneksel olarak büyük harfle başlar 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 Metotlar: Java komutlarını içeren prosedürlerdir (functions?)

Örnek: MyClass.java class MyClass { int myvariable; int getvariable() { return myvariable; void setvariable(int value) { myvariable = value;

Sınıf Üyelerine Erişim Sınıfın içerisinden: Değişkenin yada metotun adı kullanılarak erişilir. Örnekler: myvariable = 0; setvariable(0); Opsiyonel olarak, this anahtar kelimesi kullanılabilir, e.g. this.myvariable Yerel değişkenler alanı gölgelediği durumda gereklidir Dışarıdaki bir sınıftan: Nesne değişkeni +. + alanın yada metotun adı Örnekler: myobject.myvariable = 0; myobject.setvariable(0);

Alt Sınıflar (Subclasses) Başka bir sınıftan türetilen sınıflardır Türetildikleri sınıfa süper sınıf ya da temel sınıf (superclass or base class) denir Alt sınıf, temel sınıfın özelliklerini genişletir Temel sınıfın değişkenlerini ve metotlarını miras alır Ek değişkenler veya metotlar tanımlayabilir Kodların yeniden kullanımını kolaylaştırır Bir alt sınıf, diğer bir sınıf tarafından temel sınıf olarak kullanılabilir. Direk veya dolaylı temel sınıf alt sınıf ilişkisi Kalıtım hiyerarşisi

Temel Sınıf: MyClass.java class MyClass { int myvariable; int getvariable() { return myvariable; void setvariable(int value) { myvariable = value;

Alt Sınıf: MySubClass.java class MySubClass extends MyClass { int subclassvariable; int getvariablesum() { return myvariable + subclassvariable; void setvariables(int value) { subclassvariable = value; setvariable(value);

Örnek: Temel Sınıf ve Alt Sınıf A Temel Sınıfı class A { int i, j; void showij() { System.out.println("i and j: " + i + " " + j);

Örnek: Temel Sınıf ve Alt Sınıf B Alt Sınıfı class B extends A { int k; void showk() { System.out.println("k: " + k); void sum() { System.out.println("i+j+k: " + (i + j + k));

Örnek: Temel Sınıf ve Alt Sınıf main metotu (1) A superob = new A(); B subob = new B(); // Temel sınıflar da kendi başına kullanılabilir superob.i = 10; superob.j = 20; System.out.println("superOb icerigi: "); superob.showij(); System.out.println();

Örnek: Temel Sınıf ve Alt Sınıf main metotu (2) // Alt sınıf üst sınıfın tüm public üyelerine erişebilir subob.i = 7; subob.j = 8; subob.k = 9; System.out.println("subOb icerigi: "); subob.showij(); subob.showk(); System.out.println(); System.out.println("subOb icindeki i, j ve k nin toplami:"); subob.sum();

Örnek: Renkli/Ağırlıklı Kutu Daha önce yazmış olduğunuz, genişlik, yükseklik ve derinlik özelliklerini içeren "Kutu" sınıfını temel sınıf olarak kullanacak, 1. tamsayı tipinde renk özelliğini de içeren "ColorBox" sınıfını oluşturup kullanınız 2. double tipinde ağırlık özelliğini de içeren "BoxWeight" sınıfını oluşturup kullanınız

Örnek: Renkli/Ağırlıklı Kutu Kutu Sınıfı class Box { double width; double height; double depth; Box(double w, double h, double d) { width = w; height = h; depth = d; // hacim hesapla double volume() { return width * height * depth;

Örnek: Renkli/Ağırlıklı Kutu RenkliKutu Sınıfı class ColorBox extends Box { int color; // kutunun rengi ColorBox(double w, double h, double d, int c) { width = w; height = h; depth = d; color = c;

Örnek: Renkli/Ağırlıklı Kutu AgirlikliKutu Sınıfı class BoxWeight extends Box { double weight; // kutunun agirligi BoxWeight(double w, double h, double d, double m) { width = w; height = h; depth = d; weight = m;

Örnek: Renkli/Ağırlıklı Kutu Main Metotu BoxWeight mybox1 = new BoxWeight(10, 20, 15, 34.3); ColorBox mybox2 = new ColorBox(2, 3, 4, Color.BLACK); double vol; vol = mybox1.volume(); System.out.println("Volume of mybox1 is " + vol); System.out.println("Weight of mybox1 is " + mybox1.weight); System.out.println(); vol = mybox2.volume(); System.out.println("Volume of mybox2 is " + vol); System.out.println("Weight of mybox2 is " + mybox2.color);

Temel Sınıf ve Alt Sınıf Nesneleri (1/2) Alt sınıf nesneleri aynı zamanda temel sınıfın nesneleridir Alt sınıf nesnesi, temel sınıf tipinde bir değişkene atanabilir Temel sınıf nesnesi bir alt sınıf nesnesi olabilir ancak olmak zorunda değildir. Temel sınıf nesnesi, alt sınıf tipindeki değişkene atanmadan önce, alt sınıf tipine çevrilmelidir: dinamik dönüşüm (dynamic cast) Örnek: SuperClass superobject; SubClass subobject; //... superobject = subobject; // Her zaman güvenli subobject = (SubClass) superobject; // Çalışma zamanı kontrolü

Temel Sınıf ve Alt Sınıf Nesneleri (2/2) Eğer temel sınıf nesnesi, alt sınıfın bir nesnesi değilse, dinamik dönüşüm çalışma zamanı istisnası (run-time exception) oluşturur instanceof operatörü çalışma zamanında örnek tipini kontrol etmek için kullanılabilir Örnek: if (superobject instanceof SubClass) subobject = (SubClass) superobject; // Güvenli

Örnek: Alt Sınıf Değişkeninin Temel Sınıf Değişkenin Atanması (1) BoxWeight weightbox = new BoxWeight(3, 5, 7, 8.37); Box plainbox = new Box(); System.out.println("Volume of weightbox is " + weightbox.volume()); System.out.println("Weight of weightbox is " + weightbox.weight); System.out.println(); // assign BoxWeight reference to Box reference plainbox = weightbox;

Örnek: Alt Sınıf Değişkeninin Temel Sınıf Değişkenin Atanması (2) vol = plainbox.volume(); // OK, volume() defined in Box System.out.println("Volume of plainbox is " + vol); /* * The following statement is invalid because * plainbox does not define a weight member. */ // System.out.println("Weight of plainbox is " + plainbox.weight);

Temel Sınıfların Yapıcıları Varsayılan yapıcılar kullanıldığında: alt sınıf yapıcısı, temel sınıf yapıcısı çağırıldıktan sonra çağırılır Varsayılan yapıcı dışında bir yapıcı tanımlanmazsa, parametresi olmayan temel sınıf yapıcısı otomatik çağırılır Varsayılan yapıcı dışındaki yapıcıları çağırmak için: super(...) Örnek: SuperClass(int value) { SubClass() { super(0); Temel sınıf yapıcısı çağırımı, alt sınıf yapıcısının ilk satırında yapılmalıdır

Örnek: Temel Sınıf Yapıcısını Çağırma class BoxWeight extends Box { double weight; // weight of box // initialize width, height, and depth using super() BoxWeight(double w, double h, double d, double m) { super(w, h, d); // call superclass constructor weight = m;

Örnek: Temel Sınıf Yapıcıları super(...) kullanmaksızın (1/3) class A { A() { System.out.println("Inside A's constructor."); class B extends A { B() { System.out.println("Inside B's constructor.");

Örnek: Temel Sınıf Yapıcıları super(...) kullanmaksızın (2/3) class C extends B { C() { System.out.println("Inside C's constructor."); class CallingCons { public static void main(string args[]) { C c = new C();

Örnek: Temel Sınıf Yapıcıları super(...) kullanmaksızın (3/3) Program Çıktısı: Inside A s constructor Inside B s constructor Inside C s constructor super() kullanılmamasına rağmen, temel sınıfların varsayılan yapıcıları çağrıldı Madem yapıcı çağırılacak, neden super kullanalım? Farklı imzaya sahip yapıcıları çağırabilmek için Örnek: super(1, 2)

Sınıf Üyesi Görünürlüğü Bir sınıfın üyelerine diğer sınıflardan erişimi kontrol etmek için kullanılır Varsayılan durum: sadece paket içi görünüm (package-private visibility) Sınıf üyelerine sadece aynı paketteki sınıflardan erişilebilir Açık Görünürlük (public visibility): Sınıf üyelerine herhangi bir sınıf tarafından erişilebilir Korumalı Görünürlük (protected visibility): Sınıf üyelerine direk veya dolaylı alt sınıflar ve aynı paketteki sınıflar tarafından erişilebilir Gizli Görünürlük (private visibility): Sınıf üyelerine diğer sınıflardan erişilemez

Sınıf Üyesi Görünürlüğü Örneği (1/4) com/company/firstpackage/firstclass.java: package com.company.firstpackage; public class FirstClass { int myvariable; private int privatevariable; public void publicmethod() { protected void protectedmethod() {

Sınıf Üyesi Görünürlüğü Örneği (2/4) com/company/firstpackage/secondclass.java: package com.company.firstpackage; class SecondClass { FirstClass firstobject; void method() { firstobject.myvariable = 0; // Hata yok firstobject.privatevariable = 0; // Hata! firstobject.publicmethod(); // Hata yok firstobject.protectedmethod(); // Hata yok

Sınıf Üyesi Görünürlüğü Örneği (3/4) com/company/secondpackage/thirdclass.java: package com.company.secondpackage; import com.company.firstpackage.firstclass; class ThirdClass { FirstClass firstobject; void method() { firstobject.myvariable = 0; // Hata! firstobject.privatevariable = 0; // Hata! firstobject.publicmethod(); // Hata yok firstobject.protectedmethod(); // Hata!

Sınıf Üyesi Görünürlüğü Örneği (4/4) com/company/secondpackage/fourthclass.java: package com.company.secondpackage; import com.company.firstpackage.firstclass; class FourthClass extends FirstClass { FirstClass firstobject; void method() { firstobject.myvariable = 0; // Hata! firstobject.privatevariable = 0; // Hata! firstobject.publicmethod(); // Hata yok firstobject.protectedmethod(); // Hata yok

Statik Üyeler (1/3) Normal şartlarda, sınıf üyelerine (değişkenler ve metotlar), nesneler aracılığıyla erişilebilir Örnekler: myobject.myfield = 0; myobject.setfield(0); Ve sınıf üyeleri nesne değişkenleridir (instance variables): obj1.field ve obj2.field iki farklı değişkendir

Statik Üyeler (2/3) Sınıfa ait üyelere statik üyeler (static fields) denir Sınıf örneklerinden bağımsız üyelerdir Sınıf değişkenleridirler: Sınıfın tüm nesneleri tarafından paylaşılırlar Nesne adı yerine, sınıf adı kullanılarak erişilirler

Statik Üyeler (3/3) Örnek: class MyClass { static int staticvariable; static void staticmethod() {... MyClass.staticVariable = 0; MyClass.staticMetohd(); Görünürlük anahtar kelimeleri (public, protected, private): Statik olmayan üyeler için geçerli kurallar statik üyeler için de geçerlidir.

Main Metotu Bir Java programı çalıştırıldığında otomatik çalıştırılan metot: public static void main(string[] args) Parametre: Program çalıştırılırken gönderilen parametreleri içeren String dizisidir. (Eğer parametre gönderilmemişse boş dizi gönderilir.) Örnek: public class HelloWorld { public static void main(string[] args) { If (args.length > 0) System.out.println(args[0]);

Final Sınıflar Final sınıflardan alt sınıf oluşturulamaz final class MyClass { int field = 0; void method() { field = 1;

Final Üyeler (1/2) Final tanımlanan sınıf üyeleridir: metot veya değişken Final metotlar alt sınıflarda yeniden tanımlanamazlar Final değişkenler ise ilk değer atandıktan sonra değeri değiştirilemeyen sınıf üyeleridir Bu nedenle, değerleri ilk değer atanırken verilmelidir (1) Değişken tanımlanırken - hem statik hem de statik olmayan üyeler için bu yöntem kullanılablir veya...

Final Üyeler (2/2) (2) Her bir yapıcının içerisinde ilk değer atanabilir - sadece statik olmayan üyeler için kullanılabilir class MyClass { final int finalfield = 0; void method() { finalfield = 1; // Hata!