Java, Nesne Yönelimli bir dildir. Nesne Yönelimli özelliği olan bir dil olarak Java, aşağıdaki temel kavramları destekler:

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

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

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.*/

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

public static int Toplam int x, int y

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

BİL-142 Bilgisayar Programlama II

Programlama Dillerinde Kullanılan Veri Tipleri

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

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

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İ

BMH-303 Nesneye Yönelik Programlama

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

BİL-141 Bilgisayar Programlama I (Java)

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.

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

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

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

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

Nesneye yönelik: Javada herşey bir nesnedir. Java nesne yönelimli olduğu için kolayca geliştirilebilir.

BTEP243 Ders 3. class Yazım Kuralı:

Erişim konusunda iki taraf vardır:

Kapsülleme ( Encapsulation ) BBS-515 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;

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

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

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

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Sunum İçeriği. Programlamaya Giriş

NESNEYE YÖNELİK PROGRAMLAMA

Nesne Yönelimli 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Ü-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

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

7. HAFTA. Erişim Belirleyiciler

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

BMH-303 Nesneye Yönelik Programlama

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

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

ECLIPSE PROGRAMININ ÇALIŞTIRILMASI

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

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

Dizi ( Array ) ve Dizgi ( String )

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

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

Java Programlama Güz Dönemi CLASS YAPISI

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

Ders 8 Konu Özeti ve Problemler

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

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

Nesne Yönelimli Programlama

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

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

Lambda İfadeleri (Lambda Expressions)

Spring Framework Eğitimi

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Nesne Tabanlı Programlama

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

Şablon Türler (Generics)

Java String İşlemleri

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

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

NESNE TABANLI PROGRAMLAMA

MOBIL UYGULAMA GELIŞTIRME

Nesne Yönelimli Programlama

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

Nesne Yönelimli Programlama

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

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

Lecture 11: Generics

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

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

19 Şubat 2016 Cuma

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

Nesneye Dayalı Programlama

Nesne Yönelimli Programlama ve Kalıtım

Ç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 DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

// hataları işaret eden referans

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

HSancak Nesne Tabanlı Programlama I Ders Notları

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

C++ Dersi: Nesne Tabanlı Programlama

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

Java Programlamada Paket Yapısı Ve Import

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

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

YZM 2105 Nesneye Yönelik Programlama

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

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

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

Kalıtım (Inheritance)

Örnek 1: Programı yazın ve çalıştırın.

Transkript:

Bölüm 2 2. Nesneler ve Sınıflar Dr. Turgay Tugay Bilgin (http://www.ttbilgin.com) Java, Nesne Yönelimli bir dildir. Nesne Yönelimli özelliği olan bir dil olarak Java, aşağıdaki temel kavramları destekler: Çok Biçimlilik (Polymorphism) Kalıtım (Inheritance) Kapsülleme (Encapsulation) Soyutlama (Abstraction) Sınıflar (Classes) Nesneler (Objects) Oluşum (Instance) Metot (Method) Mesajı Ayrıştırma (Message Parsing) Bu bölümde, Nesneler ve Sınıflar kavramlarını inceleyeceğiz. Nesne Nesneler durumlar ve davranışlara sahiptir. Örnek: Bir köpek; renk, isim, doğurganlık gibi niteliklere sahip olmakla birlikte havlama, sallama ve yemek yeme gibi davranışlara da sahiptir. Nesne, bir sınıfın oluşumudur (instance). Sınıf - Bir sınıf, kendi türünde desteklenen bir nesnenin, niteliklerini/davranışlarını betimleyen bir şablon olarak tanımlanabilir. 2.1 Java Nesneleri Şimdi de nesnelerin neler olduklarını daha detaylı olarak inceleyelim. Eğer gerçek dünyayı göz önünde bulundurursak, çevremizde bir çok nesne bulabiliriz: Arabalar, Köpekler, İnsanlar gibi. Bütün bu nesneler, nitelik ve davranışlara sahiptirler.

Bir köpek düşünelim, o halde onun nitelikleri isim, doğurganlık, renk ve davranışları ise havlama, sallama ve koşma olur. Eğer bir yazılım nesnesi ile gerçek dünya nesnesini karşılaştırırsanız, birbirine çok benzer özelliklerinin olduğunu görürsünüz. Yazılım nesneleri de nitelik ve davranışlara sahiptir. Bir yazılım nesnesinin niteliği alanlarda depolanır ve davranışları, metotlar aracılığıyla gösterilir. Yani, yazılım geliştirme yöntemleri bir nesnenin iç durumu üzerinde çalışır ve nesneden nesneye iletişim metotlar aracılığıyla yapılır. 2.2 Java Sınıfları Sınıf, nesnelerin tek tek oluşturulduğu bir şablondur. Aşağıda bir sınıf örneği verilmiştir: public class Dog{ String breed; int age; String color; void barking(){ void hungry(){ void sleeping(){ Bir sınıf aşağıdaki değişkenlerden herhangi birini içerebilir. Yerel değişkenler. metotların, yapıcıların veya blokların içinde tanımlanmış değişkenlere yerel değişkenler adı verilir. Değişken metot içinde deklare edilip, ilk değeri atanır ve metot tamamlandığında değişken yok edilir. Oluşum(Instance) değişkenleri. Oluşum(instance) değişkenleri, bir sınıf içinde ama herhangi bir metotun dışında tanımlanan değişkenlerdir. Sınıfı yüklendiğinde bu değişkenler oluşturulur. Oluşum değişkenlerine, belirli bir sınıfın herhangi bir metodu, yapıcısı veya bloğu içinden erişilebilir. Sınıf değişkenleri. Bir sınıfın içinde, herhangi bir metodun dışında ve static anahtar sözcüğüyle deklare edilmiş değişkenlere sınıf değişkenleri adı verilir.

Bir sınıf, metotların birçok türde değerine erişebilmek için herhangi bir sayıda metoda sahip olabilir. Yukarıdaki örnekte, barking(), hungry() ve sleeping() metotlardır. Aşağıda, Java Dili sınıflarını gözden geçirirken, tartışılması gereken bazı önemli konulardan bahsedilmiştir. 2.3 Constructor lar (Yapıcı Metotlar) Sınıfların en önemli alt konularından biri de Constructor lardır. Her sınıfın bir constructor ı vardır. Eğer, bir sınıf için açıkça bir constructor yazmazsak, java derleyicisi bu sınıf için varsayılan bir constructor oluşturur. Yeni bir nesne oluşturulan her zaman, en azından bir constructor çalıştırılacaktır. Constructor ların ana kuralı, sınıfı ile aynı ismi taşımasıdır. Bir sınıfı birden çok constructor ı içerebilir. Constructor örneği aşağıda verilmiştir: public class Puppy{ public puppy(){ public puppy(string name){ // This constructor has one parameter, name. 2.4 Nesne Oluşturma Daha önceden de belirtildiği gibi; sınıflar, nesneler için şablonlar sağlamaktadır. Yani temelde bir nesne, bir sınıftan oluşturulur. Java da, new anahtar sözcüğü, yeni nesneler oluştururken kullanılmaktadır. Bir sınıftan bir nesne oluştururmanın 3 adımı vardır: Declaration(Deklarasyon). Nesne türü ve değişen adıyla değişken deklare etme. Instantiation(Örnekleme). Nesne oluşturmak için new anahtar sözcüğü kullanılır. Initialization(İlk değerini atama). new anahtar sözcüğü constructor ın çağrılması tarafından takip edilir. Bu çağrılma, new nesnesine ilk değerini atar.

Aşağıda nesne oluşturma örneği verilmiştir: public class Puppy{ public Puppy(String name){ // This constructor has one parameter, name. System.out.println("Passed Name is :" + name ); public class testclass { public static void main(string []args){ // Following statement would create an object mypuppy Puppy mypuppy = new Puppy( "tommy" ); Yukarıdaki programı derler ve çalıştırırsak, aşağıdaki sonuç üretilecektir: Passed Name is :tommy 2.5 Oluşum(Instance) Değişkenlerine ve Metotlara Erişim Oluşum değişkenlerine ve metotlara, oluşturulmuş nesneler aracılığıyla erişilir. Bir oluşum değişkenine erişmenin yolu aşağıdaki gibi olmalıdır: /* First create an object */ ObjectReference = new Constructor(); /* Now call a variable as follows */ ObjectReference.variableName; /* Now you can call a class method as follows */ ObjectReference.MethodName(); Örnek: Bu örnek oluşum(instance) değişkenlere ve metotlara nasıl erişildiğini göstermektedir: public class Puppy{ int puppyage;

public Puppy(String name){ // This constructor has one parameter, name. System.out.println("Passed Name is :" + name ); public void setage( int age ){ puppyage = age; public int getage( ){ System.out.println("Puppy's age is :" + puppyage ); return puppyage; public class testclass { public static void main(string []args){ /* Object creation */ Puppy mypuppy = new Puppy( "tommy" ); /* Call class method to set puppy's age */ mypuppy.setage( 2 ); /* Call another class method to get puppy's age */ mypuppy.getage( ); /* You can access instance variable as follows as well */ System.out.println("Variable Value :" + mypuppy.puppyage ); Yukarıdaki programı derler ve çalıştırırsak, aşağıdaki sonuç üretilecektir: Passed Name is :tommy Puppy's age is :2 Variable Value :2 2.6 Kaynak Dosya Deklarasyon Kuralları Bu bölümün son kısmı, kaynak dosya deklarasyon kurallarını incelememizi sağlamaktadır. Bu kurallar, sınıf deklarasyonları ve kaynak dosyasının içindeki import ve paket ifadeleri için gereklidir. Her kaynak dosyası için sadece bir tane public sınıf olabilir. Bir kaynak dosyası bir çok non public sınıfa sahip olabilir. Public sınfın ismi, kaynak dosyasının ismiyle aynı olmalı ve sonuna.java uzantısı eklenmiş olmalıdır. Örneğin: Sınıfın ismi ; public class Employee{ ise kaynak dosyasının ismide Employee.java olmalıdır.

Eğer sınıf bir paketin içinde tanınlanmışsa, paket ifadesi kaynak dosyasının içindeki ilk ifade olmalıdır. Eğer import ifadeleri varsa, paket ifadesi ve sınıf deklarasyonu arasına yazılmalıdırlar. Eğer hiçbir paket ifadesi yoksa, import ifadesi kaynak kodunun ilk satırında olmalıdır. 2.7 Java Paketleri (package) Basit olarak sınıflar ve arayüzlerin kategorize edilme yoludur. Java da uygulama geliştirirken, yüzlerce sınıf ve arayüz yazılacaktır, sonuç olarak bu sınıfları kategorize etmek büyük rahatlık sağlar. 2.8 Import İfadeleri Javada, daha sonra derleyici kaynak kodunu ve sınıfların yerini kolay bir şekilde bulabilsin diye için paket ve sınıf ismini içeren bir tam nitelikli isim kullanılır. Import ifadesi; belli bir sınıfın, uygun konumunu derleyiciye verme işlemidir. Örneğin aşağıdaki satır, derleyiciden java_installation/java/io dizinindeki bütün sınıfların yüklenmesini istemektedir. import java.io.*; 2.9 Örnek Çalışma Bu örnek çalışma 2 adet sınıftan oluşmaktadır. Bunlar Employee ve EmployeeTest sınıflarıdır. Öncelikle, notepad i açın ve aşağıdaki kodu ekleyin. Unutmayın ki, bu Employee sınıfıdır ve bu sınıf public bir sınıftır. Şimdi, kaynak dosyayı Employee.java ismiyle kaydedin. Employee sınıfı; name, age, designation ve salary adında 4 değişkene sahiptir. Sınıf, bir adet parametre almış constructor a sahiptir. import java.io.*; public class Employee{ String name; int age;

String designation; double salary; // This is the constructor of the class Employee public Employee(String name){ this.name = name; // Assign the age of the Employee to the variable age. public void empage(int empage){ age = empage; /* Assign the designation to the variable designation.*/ public void empdesignation(string empdesig){ designation = empdesig; /* Assign the salary to the variable salary.*/ public void empsalary(double empsalary){ salary = empsalary; /* Print the Employee details */ public void printemployee(){ System.out.println("Name:"+ name ); System.out.println("Age:" + age ); System.out.println("Designation:" + designation ); System.out.println("Salary:" + salary); Önceki çalışmalarda belirtildiği gibi, işlem main metodundan itibaren başlamaktadır. Sonuç olarak, Employee sınıfını çalıştırmak için bir main metodu olmalı ve nesneler oluşturulmalıdır. Bu görevler için ayrı bir sınıf oluşturmalıyız. Aşağıda verilen EmployeeTest sınıfı, Employee sınıfından 2 adet instance(oluşum) oluşturur ve her bir değişkene değerini atamak için her nesnenin metodunu çalıştırır. Aşağıdaki kodu, EmployeeTest.java dosyası içine kaydedin. import java.io.*; public class EmployeeTest{ public static void main(string args[]){ /* Create two objects using constructor */ Employee empone = new Employee("James Smith"); Employee emptwo = new Employee("Mary Anne"); // Invoking methods for each object created empone.empage(26); empone.empdesignation("senior Software Engineer"); empone.empsalary(1000); empone.printemployee(); emptwo.empage(21); emptwo.empdesignation("software Engineer"); emptwo.empsalary(500); emptwo.printemployee();

Şimdi her iki sınıfı da derleyin ve ardından aşağıdaki sonucu görmek için EmployeeTest dosyasını çalıştırın. C :> javac Employee.java C :> vi EmployeeTest.java C :> javac EmployeeTest.java C :> java EmployeeTest Name:James Smith Age:26 Designation:Senior Software Engineer Salary:1000.0 Name:Mary Anne Age:21 Designation:Software Engineer Salary:500.0