Java ile Nesne Merkezli ve Fonksiyonel Programlama
|
|
|
- Aydin Önal
- 10 yıl önce
- İzleme sayısı:
Transkript
1 Java ile Nesne Merkezli ve Fonksiyonel Programlama 1. Bölüm Nesne-Merkezli Programlamaya Giriş: Sınıflar, Nesneler ve Tekrar Kullanım Akın Kaldıroğlu Kasım 2015
2 Küçük Ama Önemli Bir Konu Ø Bu dosya ve beraberindeki tüm, dosya, kod, vb. eğitim malzemelerinin tüm hakları Akın Kaldıroğlu na aittir. Ø Bu eğitim malzemelerini kişisel bilgilenme ve gelişiminiz amacıyla kullanabilirsiniz ve isteyenleri yönlendirip, bu malzemelerin en güncel hallerini almalarını sağlayabilirsiniz. Ø Yukarıda bahsedilen amaç dışında, bu eğitim malzemelerinin, ticari olsun/olmasın herhangi bir şekilde, toplu bir eğitim faaliyetinde kullanılması, bu amaca yönelik olsun/olmasın basılması, dağıtılması, gerçek ya da sanal/internet ortamlarında yayınlanması yasaktır. Böyle bir ihtiyaç halinde lütfen benimle, iletişime geçin. Ø Bu ve benzeri eğitim malzemelerine katkıda bulunmak ya da düzeltme ve eleştirilerinizi bana iletmek isterseniz çok sevinirim. Ø Bol Java lı günler dilerim. 2
3 İçerik ØBu bölüm, nesne-merkezli programlamanın en temel kavramlarına bir giriştir: Ø Soyutlama (abstraction) Ø Sınıf ve nesne (class and object) Ø Sınıfın bileşenleri: Üye değişkenler ve metotlar (member variables and methods), kurucular (constructors) Ø Nesne başlatma Ø Sarmalama (encapsulation), bilgi saklama (information hiding) ve erişim niteleyiciler (access modifiers) Ø Bileşim (composition) ve kalıtım (inheritance) Ø java.lang.objectsınıfı ve metotları 3
4 Soyutlama 4
5 Soyutlama ØSoyutlama, bir şeyin, sahip olunan bakış açısı itibariyle, en önemli özelliklerini ön plana çıkarırken, önemli olmayan özelliklerini bastırmaktır, görmezden gelmektir: Ø Önemli olan özellikler, genel olarak o şeyi diğer şeylerden ayırt eden unsurlardır ya da ana, asli özelliklerdir, Ø Ayırt edici olmayanlara ise ikincil ya da arizi özellikler denir. ØZihnimiz karşılaştığı her nesneyi tek tek algılamak yerine, nesneleri, karekteristik özellikleriyle algılar, sonra da ya zihinde var olan kavramsal bir kategoriyle örtüştürür ya da böyle bir kategori yoksa, bu nesneden yola çıkarak yeni bir kategori oluşturur. 5
6 Neden Soyutlama? ØÇünkü zihnimiz bu haliyle soyutlama yapmadan bir nesneyi tüm yönleriyle kavrayamaz. ØDolayısıyla soyutlama, bir indirgemedir, basitleştirmedir ya da genellemedir. ØSoyutlamalar, bir bebeğin dünyayı algılama şeklinde apaçık görülür: Ø Köpek: 4 ayaklı, havlayan ve kuyruğunu sallayan canlı 6
7 İstanbul Metro Haritası 7
8 "Ne"lik ve "Nasıl"lık ØSoyutlamalar, bir şeyin "ne"liği üzerine yoğunlaşır, "nasıl"lık üzerine eğilmez. ØYani temel özellikleri, o özelliklerin oluşumundan, nasıl meydana geldiğinden bağımsız olarak ele alır: Ø Araba yı algılamak için, motor yapısını bilmeye gerek yoktur, Ø Ya da bir insanla ortaklık kurmak için onun DNA dizilerini bilmeye de gerek yoktur. 8
9 Sınıflandırma ØZihin, sonsuz sayıda soyutlama ile uğraşır, ØVe bu soyutlamalarla elde edilen genellemeler birer kategori oluşturur, ØSoyutlamayı yönlendiren ilgi alanları ya da kriterler çerçevesinde kategori oluşturmaya sınıflandırma (classification) denir. ØBöylece nesneler, olgular, duygular vs. hepsi belli sınıflara ait hale gelirler. Ø Sınıflar, kavramsal genellemeleri, nesneler ise sınıfların gerçeklikte var olan örneklerini oluşturur. 9
10 Sınıflandırma Örneği Natural Objects Plant Animal Mineral Mammal Fish Bird Reptile Amphibian Insect Dog Cow Monkey... 10
11 Sınıf ve Nesne (Kavramsal) 11
12 Sınıf ve Nesne ØKonuşmalarımızda "Köpek dediğin sadık olmalı." ya da "Köpekler çok sadık hayvanlardır." diyorsak, komşunun köpeğinden ya da sokakta az önce karşılaştığımız köpekten değil de kavramsal olarak köpek sınıfından bahsediyoruz demektir ve söylediklerimiz, var olmuş ve olacak bütün köpekler için geçerlidir. Ø"Komşunun köpeği çok sadık." dediğimizde ise köpek sınıfının bir örneği ya da nesnesi olan, soyut olmayıp somut olan bir canlıdan bahsediyoruz demektir. Øİlk durumda "köpek" bir sınıfı, "komşunun köpeği nde ise köpek bir nesneyi (object ya da instance) temsil eder. 12
13 Nesne (Object) ØNesne, insan zihninin algıladığı herhangi bir kavramsal ya da fiziksel şeydir: Ø Öğrenciler, derslere devam ediyorlar. Ø Öğretmen, sınıfta öğrencileri dinliyor. Ø Dersler yarın başlıyor. ØNesnelerin özellikleri vardır ve bu özellikler, nesnelerin durumlarını (state) ve davranışlarını (behavior) ifade eder: Ø Sarı boyalı sınıfta öğrenci şiir okuyor. Ø Kırmızı top suya yuvarlandı. 13
14 Sınıf I ØSınıf, benzer nesnelerin kategorisidir. Ø Sınıf, nesneler için bir kalıptır, şablondur, yani kendisinden üretilecek olan nesnelerin sahip olacağı özellikler ile davranışları tarif eder. ØSınıf, nesnelerinin özellikleri değişik tiplerde değişkenlerle ya da bir başka deyişle veri yapılarıyla (data structures), davranışlarını ise metotlarla (method) (fonksiyon (function)/prosedür (procedure)) ifade eder. ØNesnenin özelliklerinin bütününe durum (state), metotların bütününe de arayüz (interface) denir. 14
15 Sınıf II ØBöylece, aynı sınıftan üretilen nesneler aynı tipte olurlar, yani: Ø Aynı özelliklere sahiptir ama özelliklerin değerleri değişebilir, Ø Aynı davranışlara sahiptir, Ø Davranışlar genelde duruma bağlı olduğundan, farklı durumdaki nesnelerin davranışları da farklı olur. 15
16 Yazılımın Nesnesi ØYazılımın nesnesi ise gerçek dünyadaki, kavramsal ya da fiziksel, bir nesneyi temsil etmek üzere, onun özelliklerini ve davranışlarını ifade eden yapıdır: Ø Yazılımın nesnesi, temsil ettiği gerçek dünyadaki nesnenin durumunu, sınıfında tanımlanan değişkenlerle, davranışlarını da metotlarla yerine getirir. Ø Yani nesne, sınıfının ifade ettiği soyut yapının hayat bulmuş, gerçekleşmiş halidir. 16
17 Durum ØNesnelerin durumu ile daha çok durağan (static), görülen ve hissedilen, özellikleri kastedilir ve programlama dillerinde farklı tiplerde bir grup değişken ile ifade edilir. ØNesnenin durumunu oluşturan her bir ayrık bilgiye ise özellik (attribute) denir: Ø Öğrenci Ø No, isim, soy isim, doğum tarihi, cinsiyet, adres, bölüm, aldığı dersler, vs. Ø Ders Ø No, isim, bölüm, veren kişi, kredi sayısı, vs. 17
18 Davranış ØNesneler davranırlar, hareket ederler, belli işleri yerine getirirler. ØYazılım nesnelerinin davranışlarına, yerine getirdiği sorumluluk (responsibility), verdiği hizmet (service) ya da aldığı mesaj (message) olarak bakmak, işimizi kolaylaştırır: Ø Öğrenci Ø Kayıt olur Ø Ders alır Ø Sınava girer, vs. Ø Ders Ø Öğrencinin kaydolmasına/bırakmasına izin verir Ø Ön şart dersleri hakkında bilgi verir, vs. 18
19 Mesajlaşma ØBir nesne şu 4 şekilden biri ile bir sorumluluk yerine getirir: Ø Nesne, kendi durumu hakkında bilgi verir, Ø Nesne, kendi durumunu değiştirir, Ø Nesne, bir işi ya da faaliyeti yerine getirir ve zorunlu olmamakla birlikte bu faaliyet sonucunda bize birşeyler geri verir, Ø Nesne, bizim ondan istediğimizi, bir başka nesneye havale eder: Ø Havale edilen nesne bu sefer yukarıdaki 3 durumdan birisiyle istenileni yerine getirir. ØNesnelerin birbirlerinden bir sorumluluk/hizmet yerine getirmesini istemeye mesajlaşma (messaging) denir. 19
20 Nesne-Merkezli Yazılım ØNesne-merkezli yazılım sistemi ise, birbirleriyle mesajlaşan ve bu şekilde iş süreçlerini yerine getiren bir grup nesneden başka birşey değildir. ØNesneler, yazılım sisteminin yerine getireceği sorumlulukları paylaşırlar öyle ki her bir nesne, temsil ettiği kavramla ilgili sorumlulukları yerine getirir. 20
21 Sınıf ve Nesne (Mekanizma) 21
22 Sınıf ØSınıf, kendisinden üretilecek nesnelerin kalıbıdır - şablonudur. Ø Aynı sınıftan üretilen nesnelerin tipi, aynıdır. ØSınıf, nesnelerinin özelliklerini (attributes) ve davranışlarını (behavior) tanımlar. Ø Nesnelerin özellikleri, değişkenlerle (variables), Ø Nesnelerin davranışları ise metotlarla (methods) tanımlanır. ØNesnenin özelliklerinin bütününe durum (state), metotların bütününe de arayüz (interface) denir. 22
23 Java da Sınıf Tanımlama I (Tekrar) ØJava da sınıf tanımlamak için class anahtar kelimesi kullanılır: <niteleyici>* class <Sınıfİsmi>{ <özellik>* <kurucu>* <metot>* } ØSınıfın tanımı, Java da en geniş blok olan sınıf blokuyla yapılır. ØSınıfın, sıfır ya da daha fazla niteleyicisi (modifier) olabilir. ØSınıfın, geçerli ve anlamlı bir ismi olmalıdır. 23
24 Java da Sınıf Tanımlama II (Tekrar) ØKurucu ya da yapılandırıcı (constructor), nesne yaratırken çağrılan özel bir metotdur. ØZorunlu olmamakla birlikte sınıfın öğeleri, fiziksel olarak sınıf içinde, özellikler, kurucular ve metotlar olarak sıralanır. Ø Özellikler, farklı tiplerde olan nesne değişkenleridir (instance variables). Ø Metotlar ise nesnelerin sorumluluklarını yerine getiren nesne fonksiyonlarıdır (instance methods). 24
25 Araba ØBir "Araba" soyutlaması yapın. Ø Soyutlamada bulunması gereken davranışlar nelerdir? Ø Gitmek Ø Durmak Ø Hızlanmak Ø vs. Ø Soyutlamada bulunması gereken durum bilgileri nelerdir? Ø Marka Ø Model Ø Yıl Ø Hız 25
26 public class Car { String make; String model; String year; int speed; int distance; } public Car(String make, String model, String year, int speed, int distance) { this.make = make; this.model = model; this.year = year; this.speed = speed; this.distance = distance; } public void go(int newdistance){ distance += newdistance; } public void accelerate(int newspeed){ speed = newspeed; } public void stop(){ speed = 0; } public String getinfo(){ return "Car Info: " + year + " " + make +...; } 26
27 Car.java ve Test1.java 27
28 Değişkenlerin Rolleri (Tekrar) ØJava da değişkenler, basit olsun referans olsun, fonksiyonellik ya da rol açısından üçe ayrılırlar: Ø Nesne değişkenleri (instance (object) variables): Nesnenin durumunu oluşturan değişkenlerdir. Ø Sınıf değişkenleri (class variables): Nesnelerin ortak durumunu ifade eden değişkenlerdir. Değerleri nesneden nesneye değişmez. Ø Yerel değişkenler (localvariables): Geçici değişkenlerdir. Øİlk ikisine üye değişkenleri (member variables), veri üyeleri (data members) ya da alanlar (fields) denir ve sınıf blokunda tanımlanır. ØBu bölümde önce nesne ve sınıf değişkenlerini ele alacağız. 28
29 Nesne Değişkenleri ØNesne değişkenleri (instance variables ya da fields), fonksiyonel olarak, nesnenin özelliklerini ifade ederler. Ø Nesne değişkenleri, yapısal olarak referans değişkeni olabildiği gibi basit değişken de olabilir. Ø Nesne değişkenleri, sınıfın içinde ama metot ya da başlatma bloğu (initializer block) gibi herhangi bir alt blok dışında, herhangi bir yerde tanıtılmalıdır, Ø Genelde sınıfın en başında tanıtılırlar. Ø Nesne değişkenleri ilk değerlerini tanıtılırken alabildikleri gibi daha sonra bir metot içinde, genelde kurucu metotta da alabilirler. Ø Tanımlanacak nesne değişkeni sayısında bir kısıtlama yoktur. 29
30 Nesne Yaratmak I ØNesne yaratmak dört adımda gerçekleşir: Ø Tanıtım (Declaration): Önce yaratılacak nesneyi gösterecek referans değişkeni tanıtılır. Ø Yaratma (Instantiation): İkinci adımda new anahtar kelimesi kullanılarak nesne yaratılır. new operatörü, nesne yaratıldığında, onu gösteren bir referansı geriye döndürür. Ø Başlangıç durumuna getirme (Initialization): Kurucu çağrısı yapılarak, nesne, başlangıç durumuna getirilir. Ø Atama (Assignment): Başlangıç durumuna getirilen nesnenin referansı, kendi tipinden bir referans değişkenine atanır. Car car = new Car(); 30
31 Özelliklere Erişim ØYaratılan nesnenin özelliklerine ve davranışlarına nesnenin referansı yoluyla erişilir. ØErişim "." notasyonuyla olur: reference.attribute reference.method() car.speed = 60; System.out.println(car.speed); car.go(100) 31
32 Nesne ve Referans ØNesne ve referans, farklı kavramlardır. Ø İkisinin de tipi vardır. Ø Nesne, sınıftan türetilen ve bir duruma ve bir grup davranışa sahip olup, heap isimli bellek alanında yaşayan yapıdır. Ø Referans ise, nesneye ulaşmamızı sağlayan ve bellekte bulunan bir değişkendir. ØBir referans, zamanın farklı anlarında, kendi tipinden farklı nesneleri gösterebilir. Ø Fakat bir anda sadece tek bir nesneyi gösterir. ØBir nesneye birden fazla referans olabilir. ØBazen referans olmadan nesne, bazen de nesne olmadan referans vardır. 32
33 Car.java ve Test2.java 33
34 Metot ØJava da bir metotun beş ana parçası vardır: Ø İsim: Anlamlı ve genelde emir kipinde bir isim. Ø Parametreler (parameters): Dışarıdan geçilen parametreler. Ø Dönüş değeri tipi (return type): Çağrıldığı ortama döndüreceği değerin tipi. Ø Kod (body, implementation): İfadelerden oluşan çalışan kısım. Ø Niteleyiciler (modifiers): Farklı amaçlar için değişik niteleyici anahtar kelimeleri kullanılabilir. <niteleyici>* <dönüş tipi> <isim>(<parametre>*){ <kod>* } 34
35 Gerçek ve Formal Parametreler Ø Gerçek parametre (actual parameter), metot çağrıldığında ona geçilen parametrelere denir. Ø Gerçek parametrelere daha sıklıkla argüman da denir. Ø Formal parametre (formal parameter), metot tanımında olan parametrelere denir. Ø Karşılık gelen gerçek parametreler ile formal parametreler tip bakımından uyumlu olmalıdır. Ø Otomatik yükseltmeler çevirme (cast) operatörüne ihtiyaç duymadan yapılır. Ø Dönüştürülebilen gerçek parametreler için çevirme (cast) operatörü kullanılmalıdır. 35
36 Calculator.java 36
37 Overloading ØBir isim, bir sınıftaki birden fazla metotta kullanılabilir. Ø Bu duruma çoklu kullanım (overloading) denir. ØOverload edilen metotların parametre listesi, sayı ve/veya tip bakımından farklı olmalıdır. Ø Bir sınıfta imzası aynı olan iki tane metot olamaz. ØOverloading, genelde, aynı işi farklı parametrelerle yapan metotlar için kullanılır. Ø System.out.println() metotları 37
38 CalculatorOverloaded.java 38
39 Kurucu I ØNesne oluşturulurken çağrılan özel metota kurucu/yapılandırıcı (constructor) denir. ØKurucu metotlar, bazı açılardan özel metotlardır ve sadece nesne oluşturuken çağrılırlar. ØKurucular, new anahtar kelimesiyle kullanılırlar. Ø Java da kurucu çağrısı yapmadan oluşturulabilen sadece 2 tip vardır: String ve dizi (array) Ø Diğer her türlü nesne, ancak ve ancak kurucu ile oluşturulur. ØKurucu metotları ile nesnenin durumunun ilk halini alması sağlanır. ØBu amaçla kurucu metotlar parametre tanımlayabilir ve bu durumda onlara değer geçilir. 39
40 Kurucu II ØKurucunun ismi, içinde tanımlandığı sınıfın ismiyle aynı olmalıdır. ØKurucunun dönüş tipi, dolayısıyla da dönüş değeri yoktur. ØKurucular overload edilebilirler. Ø Bu durum, farklı nesne oluşturma şekillerine karşılık gelir. ØHiçbir argüman almayan kurucuya varsayılan kurucu (default constructor ya da no-arg constructor) denir. ØArgüman alan kuruculara akıllı kurucu (smart constructor) denir. 40
41 Car.java ve Test3.java 41
42 Uygulama ØDaha önce oluşturduğunuz Circle (ya da Daire) isimli sınıfa iki tane kurucu koyun: Ø Varsayılan kurucu yarı çapı 10 olan bir Circle nesnesi oluşturur. Ø Argüman alan kurucu ise geçilen değeri, yarıçapa atar. ØSonra CircleTest (ya da DaireTest) sınıfında, bu iki kurucu ile oluşturulan nesnelerinizin alan ve çevrelerini hesaplayıp ekrana basın. 42
43 Kurucuların Birbirlerini Çağırmaları ØKurucular, bazen yapacakları işi, diğer kurucuların yardımıyla yapabilirler. ØBu durumda kurucuların birbirlerini çağırmaları gerekir. ØBu ise "this" anahtar kelimesi ile yapılır. public TreeWithThis(String newtype, float newheight) { type = newtype; height = newheight; } public TreeWithThis(String newtype) { type = newtype; height = 1.0f; } public TreeWithThis(float newheight) { type = "Pine"; height = newheight; } 43
44 TreeWithThis.java Øthis ile, aynı metotlarda olduğu gibi, imzası uyan kurucu metot çağrılır. Øthis çağrısı, bir kurucuda ilk çalışan satır olmalıdır. Neden? public TreeWithThis(String newtype, float newheight) { type = newtype; height = newheight; } public TreeWithThis(String newtype) { this(newtype, 1.0f); } public TreeWithThis(float newheight) { this("pine", newheight); } 44
45 Uygulama ØDaha önce oluşturduğunuz Circle (ya da Daire) isimli sınıftaki varsayılan kurucuya yapacağıız değişiklikle, onun this(...) çağrısı ile, argüman alan kurucuyu çağırarak nesne oluşturmasını sağlayın. 45
46 this Anahtar Kelimesi Øthis, anahtar kelime olarak genel olarak şu 2 yerde kullanılır: ØKurucu ya da bir nesne metotunda, aynı isimde bir yerel değişken olduğunda, nesne değişkenine ulaşmak için. Ø Bu durum, genelde aynı isim, hem nesne hem de yerel değişkende kullanıldığında söz konusu olur. Ø Böyle bir durum yoksa this kullanmaya da gerek yoktur. public class Tree{ String type; float height; public Tree(String type, float height){ this.type = type; this.height = height; } } 46
47 this Anahtar Kelimesi II Ø Herhangi bir sebeple, üzerinde metotun üzerinde çağrıldığı nesneye ulaşmak için. public class Tree{ String type; float height; } public Tree grow(){ height++; return this; } 47
48 Uygulama ØDaha önce oluşturduğunuz Circle (ya da Daire) isimli sınıftaki kuruculara geçilen parametreleri, nesne değişkenleriyle aynı isimde yapın ve kurucu içindeki atamlarda nesne değişkenlerine ulaşmak için "this" referansını kullanın. ØBenzer şeyi set metotları için de yapın. 48
49 Parametre Geçme ØJava da parametreler, değerleri ile geçilirler (pass-by-value). Ø Bir metoda bir basit değişken geçilirken, parametrenin değeri, gerçek değişkenin değeri olarak belirlenir, Ø Benzer şekilde geçilen bir nesne ise, bu durumda o nesnenin referansının değeri, parametre değeri olarak belirlenir. (Aslında nesne geçme ifadesi doğru değildir, çünkü hiç bir zaman nesneye doğrudan ulaşamayız, sadece referansına ulaşabiliriz. Dolayısıyla geçilen nesne değil, referansıdır.) Referansın değeri ise zaten nesnenin adresidir. ØDolayısıyla, her halükarda geçilen şey, gerçek argümanın değeridir. 49
50 ObjectPassing.java 50
51 static 51
52 static Anahtar Kelimesi ØHer nesne bellekte, kendi durumunu ifade eden değişken kümesine sahiptir ve bu kümede bulunan değişkenlerin değerleri, diğer nesnelerdekilerden bağımsız olarak değiştirilebilir. Ø Üye veriler (data members) ØBazen nesnelerin öyle özellikleri olur ki değeri nesneden nesneye değişmez, bütün nesneler için aynıdır. Ø Bu durumda o bilgiyi, her nesnede ayrı ayrı saklanacak şekilde nesne değişkeni olarak tanımlamak uygun değildir. ØBu şekilde, aldığı değeri nesneye bağlı olmayan değişkenler "static" anahtar kelimesiyle nitelendirilirler. 52
53 static Değişkenler ØStatik değişkenler, nesneden bağımsız olduklarından nesnelerin değil, nesnelerin sınıflarının parçasıdırlar. ØBu yüzden, static olarak nitelendirilen değişkenlere sınıf değişkenleri (class variables) de denir. ØStatik değişkenlerin sadece bir kopyası vardır, o da sınıftadır. ØSınıf değişkenlerine hem sınıf hem de nesneler üzerinden erişilebilinir. Ø Uygun olan sınıf üzerinden erişmektir; çünkü nesne üzerinden erişildiğinde, nesne değişkeni izlenimi vermektedir. 53
54 static Metotlar ØSınıflar, statik değişkenler gibi statik metotlara da sahip olabilirler, Ø Bunlara da statik metotlar denir. ØStatik metotlar da static değişkenler gibi sınıfın bir parçasındırlar, Ø Hem sınıf hem de nesne üzerinde çağrılabilirler. Ø Uygun olan sınıf üzerinden erişmektir. 54
55 StaticDemo.java 55
56 Ne Zaman static? I ØStatik özellikler, sınıfın bir parçası olduklarından, çağrılmaları için bir nesneye ihtiyaç yoktur. ØDolayısıyla eğer bir bilgi bir sınıftan oluşturulan nesnelerin durumunun bir parçası olup, değeri nesneden nesneye değişmiyorsa, bir başka değişle, değeri tüm nesneler için her zaman aynı olacaksa, bu değişken static yapılır. ØBenzer şekilde bir metot eğer bir sınıfın statik olan değişkenlerini kullanıyor, nesnelerin değişkenlerini kullanmıyor ise o metot da static yapılır. 56
57 Ne Zaman static? II ØZaten statik metotlar doğrudan ancak statik değişkenlere ulaşabilir, nesne değişkenlerine, nesnesiz olarak ulaşamaz. ØÇünkü statik metotlar bir nesneye ihtiyaç duymazlar ve bir nesne üzerinde çağrılsalar bile sınıf üzerinde çalışırlar ve sadece sınıf değişkenlerine ulaşırlar. ØStatik metotlar için this de yoktur. 57
58 Ne Zaman static Değil? I ØStatik kullanımı, tamamen marjinal ve sıra dışı bir durumdur. Ø Aslolan daima nesnedir, yani nesne değişkenleri ve metotlarıdır. ØÇünkü nesneler, problemimizi modellemeye yararlar. ØStatik değişken ve metotlar ise bu modelde çok özel durumlarda ortaya çıkarlar ve kullanımları ancak bu özel durumlara has olmalıdır. ØNesne oluşturmanın gereksiz olduğu durumların çözümü static değildir. Ø Bu durumun çözümü gereksiz nesne oluşturmamaktır. 58
59 Ne Zaman static Değil? II ØBir sınıftaki tüm değişkenleri ve dolayısıyla da metotları static yapmanın sebebi olsa olsa o sınıftan nesne oluşturmanın teorik ve pratik olarak anlamlı olmamasıdır. Ø java.lang.math sınıfında var olan E ve PI alanları ile tüm metotlar statiktir, çünkü Math sınıfının nesnelerinin olması teorik açıdan muhaldir. Pratik açıdan da zaten sınıfı, muhtemel tek nesne olarak görülebilir. Ø Benzer şekilde java.lang.system sınıfı da statik alan ve metotlara sahiptir. Øİş alanını modellemeye bir katkısı olmayan utility sınıflarından, çoğu zaman bu sınıfların nesnelerini oluşturmadan, statik metotlarla, hizmet alırız. 59
60 Main Metot ØJava da pek çok sınıfınız olsa bile en az bir tanesi main isimli özel bir metota sahip olmalıdır. Ømain metota sahip olan sınıf JVM e geçilerek çalıştırılabilir. Ø main metot, sistemin çalışmaya başladığı yerdir. Ø Nerede tanımlandığının pek önemi yoktur. ØDolayısıyla diğer sınıfların nesneleri bu metotta oluşturulur ve üzerindeki metotlar burada çağrılarak sistem çalışmaya başlar. Ømain metotun arayüzü (interface) aşağıdaki gibidir: public static void main(string[] args) 60
61 Uygulama ØBir sınıftan kaç tane nesne oluşturulduğunu nasıl bulursunuz? ØBir sınıf yapın ve bu sınıfın herhangi bir kurucusunu çağırarak oluşturulan tüm nesneleri sayın. ØBu sayıyı tutacak değişkenin nesne mi yoksa sınıf değişkeni mi olması gerekir? 61
62 final 62
63 final Anahtar Kelimesi Øfinal anahtar kelimesi ile daha önce bir basit değişkenin nasıl bir sabite haline getirilebileceğini görmüştük. Ø final kullanılarak tanıtılan basit değişkenlerin değeri değiştirilemez. final int i = 5; i = 8; // Compile-time error. 63
64 final Referans ØNesneler doğrudan final yapılamaz, ancak nesnelerin alanları final yapılabilir. Ø Bu şekilde durumu değişmeyen nesne elde edilir. ØReferansın final olmasının anlamı, basit değişkenlere göre biraz farklıdır. Øfinal referanslar, gösterdikleri nesneden başka bir nesneyi gösteremezler. final Car c = new Car(); c = new Car(); // Compile-time error. 64
65 final Değişkenler Øfinal olan değişkenin, basit olsun referans olsun, tanıtıldığı yerde bir ilk değer almasının zorunlu olduğunu belirtmiştik. ØBu durumun iki istisnası vardır: Ø Tanıtıldıktan sonra, ilk erişimde bir ilk değer vermek Ø Kurucu metotta bir ilk değer atamak Ø Başlatma blokunda bir ilk değer atamak (ileride gelecek) ØYani final olan değişkenlere kurucuda ya da ilk ulaşımda bir ilk değer atarsanız, tanıtıldığı yerde atama zorunluluğu kalkar. 65
66 FinalCar.java 66
67 Başlatma (Initialization) 67
68 İlk Değer Atama ØJava da üye değişkenler (member variables) için ilk değer verme aşağıda belirtilen 5 yoldan herhangi birisiyle yapılabilir: Ø Tanımlama cümleleri (definition statements) Ø Kurucular (constrcutors) Ø Metot çağrıları Ø Nesne (ilk değer atama) başlatma blokları (initialization blocks) Ø Statik (ilk değer atama) başlatma blokları (static initialization blocks) 68
69 InitializersDemo.java 69
70 Başlama Sırası I ØBir sınıfta, pek çok sınıf ve nesne değişkeni, ilk değer atama blokları ve kurucular olduğunu göz önüne alındığında, bu değişkenlerin oluşturulmaları ve kurucuların çağrılması hangi sırada olur? ØInitializationOrder.java 70
71 Başlama Sırası II ØBir sınıfa ilk defa ulaşıldığında önce o sınıfın.class dosyası JVM e yüklenir. Ø Bir sınıfa ulaşmanın yolları ise şunlardır: Ø Statik bir değişkenine ulaşmak Ø Statik bir metotunu çağırmak Ø Nesnesini oluşturmak için kurucu çağrısı yapmak ØDaha sonra sınıfın statik değişkenleri başlatılır. Ø Sınıfın bir nesnesi oluşturulmasa bile, sınıfa ulaşıldığında statik değişkenleri yüklenir ve ilk değer ataması yapılır. Ø Değişkenlerin başlatılmasına, varsa statik başlatma blokları da dahildir. 71
72 Başlama Sırası III ØSonra eğer sınıfın bir nesnesi oluşturuluyorsa, nesne değişkenleri de başlatılır. ØDeğişkenlerin başlatılmasına, varsa nesne başlatma blokları da dahildir. Ø Daha sonra kurucu çağrısı yapılır. ØHer yeni nesne için bu işlemler, yani nesne değişkenlerinin başlatılması ve kurucu çağrısı tekrarlanır. ØSınıf değişkenleri, ne kadar nesne oluşturulursa oluşturulsun, sadece ve sadece bir defa başlatılır. ØFakat nesne oluşturulurken, her halukarda, sınıf değişkenleri nesne değişkenlerinden önce başlatılır. 72
73 Başlama Sırası IV ØDolayısıyla başlama sırası Ø Sınıf değişkenleri (statik başlatma blokları dahil) Ø Nesne oluşturuluyorsa Ø Nesne değişkenleri (nesne başlatma blokları dahil) Ø Kurucu çağrısı şeklindedir. ØBirden fazla sınıf ve nesne değişkeni olduğu durumda başlatma sırası, fiziksel sırayla belirlenir, önce gelen önce başlatılır. 73
74 Uygulama ØDaha önce yaptığınız University uygulaması üzerinde başlama sırasını tahmin edin. Ø Kuruculara gerekeli print ifadelerini yazarak başlama sırasını gözlemleyin. 74
75 null I Ønull, bir anahtar kelimedir, sadece referans değişkenlerine atanabilir ve referansın hiç bir nesneyi göstermediğini ifade eder. Ø null ın tipi yoktur, her referans tipe atanabilir ya da çevrilebilir (cast). Ø Yani referans vardır ama bellekteki hiç bir nesneye işaret etmiyordur. ØBu şekildeki referanslara "null pointer" denir. ØBellekteki hiçbir nesneyi göstermeyen refereranslar üzerinden herhangi bir erişim daima "NullPointerException"a sebep olur. Ø Çünkü erişilecek değişkenlere ve metotlara sahip bir nesne yoktur. 75
76 null II ØBir referans, iki halde null olur: Ø Referans sadece tanımlanıp da herhangi bir nesne ataması yapılmadığında, Ø Referansa özel olarak null atandığında. ØNeden bir referansa null atanır? Ø Referans ile gösterdiği nesne arasındaki ilişki kesildiğinde ve nihayetinde bir nesneyi gösteren hiç bir referans kalmadığında, o nesne Çöp Toplayıcı (Garbage Collector) tarafından toplanıp işgal ettiği alan da belleğe geri kazandırılır. Car mycar; // null reference mycar.make = "Mercedes" // NullPointerException mycar = new Car(); // Not a null reference anymore mycar = null; // null reference 76
77 Organizasyon 77
78 Kod Organizasyonu: Paketler ØJava da oluşturulan sınıfları (ve arayüzleri), mantıksal açıdan kategorize etmek, bu kategoriler arasında erişim kuralları koymak ve isim uzayı oluşturup çakışmaları önlemek amacıyla paketler vardır. ØPaket "package" anahtar kelimesiyle oluşturulur. ØHer sınıf tanımından önce yazılacak bir package cümlesiyle o pakete ait olur. package mypackage; ya da package org.javaturk.oofp.ch01.car; 78
79 package I ØBir Java kaynak kodunda ancak bir tane paket ifadesi olabilir. Ø Her sınıf, arayüz ya da enumın sadece bir tane paketi olabilir. Ø Bir kaynak dosyasında birden fazla sınıf/arayüz varsa hepsi aynı pakete dahil olur. Øpackage ifadesi bir Java kaynak kodunda çalışan ilk cümle olmalıdır. Ø package ifadesinden önce boşluk ve yorum satırları olabilir. ØPaket yapısı,.class dosyaları için geçerli ve gereklidir,.java kaynak kodları için değil! ØFakat genelde kaynak kodları da paketleriyle düzenlenir. 79
80 package II Øİç içe paketlerle paket hiyerarşisi oluşturulabilir. ØBöylece bir kökten (root) başlayarak dallanan alt paketlerle, çok sayıda sınıf ve arayüzden oluşan yapılar, anlamlı kategorizasyona ve buna karşılık gelen fiziksel organizasyona sahip olur. ØPaketler, işletim sistemindeki dizinlere (directory) karşılık gelir. Ø Dolayısıyla aynı paketteki yapılar aynı dizinde bulunurlar. 80
81 package III ØPaketin bir diğer amacı da bir isim uzayı (namespace) oluşturarak, muhtemel çakışmaları önlemektir. ØBir projede yazılan bir kaç tane farklı Printer ya da Date sınıfının, birbileriyle ya da satın alınan bileşenlerdeki aynı isimdeki sınıflarla karışmasını önlemenin yolu, her bir Printer ya da Date sınıfının apayrı pakete sahip olmasıdır. ØBu amaçla, Internet domain adresini tersinden kullanarak paketler oluşturduğunda çakışma olmayacaktır. com.mycompany.myproject.mysubpackage org.javaturk.oop org.javaturk.advancedjava org.javaturk.javaee org.javaturk.dp 81
82 Tam İsim ØBir pakete sahip olan bir sınıfın tam ismi (fully qualified name) artık "paket.sınıfismi" olarak değişmiştir. ØJVM e (java) geçilirken artık tam ismiyle geçilmesi gereklidir. ØDaha önce de belirtildiği gibi bu durum.class dosyaları yani derlenmiş sınıflar için geçerlidir,.java dosyalarındaki kaynak kodlar için geçerli değildir. package shipping.domain; // Company.java javac Company.java // Compiling java shipping.domain.company // Running package shipping.gui; javac MainMenu.java java shipping.gui.mainmenu // MainMenu.java // Compiling // Running 82
83 Paketler Arası Erişim ØAynı paketlerdeki yapılar birbirlerine doğrudan erişebilirler. ØFarklı paketlerdeki yapıların birbirlerine doğrudan erişebilmeleri, ancak tam isim kullanmakla gerçekleşir: package org.javaturk.oop.ch08.packaging.packagea; public class ClassA { org.javaturk.oop.ch08.packaging.packagex.classx x; } package org.javaturk.oop.ch08.packaging.packagex; public class ClassX {} public ClassA(org.javaturk.oop.ch08.packaging.packageX.ClassX x) { this.x = x; } 83
84 import I ØTam isim kullanarak erişimin sıkıntılı olduğu açıktır: Ø Bu durumda farklı paketlerdeki yapılar birbirlerini import ederler. Øimport cümlesi, Java kaynak kodunda varsa package cümlesinden sonra gelir. package org.javaturk.oop.ch08.packaging.packageb; import org.javaturk.oop.ch08.packaging.packagex.classx; public class ClassB { ClassX x; public ClassB(ClassX x) { this.x = x; } } 84
85 import II ØBir kaynak kodda birden fazla yapı import edilebilir. ØBu durumda yapılar tek tek import edilebileceği gibi, "*" ile toptan import edilebilir. Ø "*" ile alt paketler import edilemez. package org.javaturk.oop.ch08.packaging.packageb; import org.javaturk.oop.ch08.packaging.packagex.classx; import org.javaturk.oop.ch08.packaging.packagex.classz; // ya da import org.javaturk.oop.ch08.packaging.packagex.*; public class ClassB { ClassX x; ClassZ z; public ClassB(ClassX x, ClassZ z) { this.x = x; this.z = z; } } 85
86 Paketler ve Dizinler ØPaketler, işletim sistemindeki dizinlere karşılık gelir. ØDolayısıyla bir yapının paketinin org.javaturk.oop.ch02 olması örneğin Windows işletim sistemine bir yerde fiziksel olarak org\javaturk\oop\ch02\ şeklinde bir dizin yapısının bulunduğunu gösterir. ØBelirtilen pakete sahip olan sınıfın.class dosyasının fiziksel olarak, pakete karşılık gelen dizinde olması şarttır. ØBu şart.java kaynak kodu için geçerli değildir. ØDolayısıyla paket aslında bir çalışma zamanı yapısıdır ve.class dosyalarını ilgilendirir. Ø.java kaynak kodları tamamen farklı bir dizin yapısında olabilir. 86
87 Bir Dizine Derlemek ØJava kaynak kodları derlenirken "-d" seçeneği ile bir dizin geçilirse, javac, paket yapısına uygun olarak.class dosyalarını belirtilen dizine koyacaktır. package org.javaturk.oop.ch08;... public class Bulp{...} C:> javac d C:\classes Bulp.java 87
88 Uygulama ØAynı paket yapısını Eclipse üzerinde kurun ve SelamTest i çalıştırın. ØProjenin özelliklerine giderek CLASSPATH ayarlarını gözlemleyin. 88
89 Java Paketleri ØJava da pek çok pakete sahiptir: Ø java.lang Ø java.util Ø java.io ØBu paketlerden java.lang her Java kaynak koduna daima otomatik olarak import edilir. ØJava nın paketleri ve içerikleri, Java API sini oluşturur. 89
90 Sarmalama (Encapsulation) 90
91 Sarmalama (Encapsulation) I ØVerinin, o veri üzerinde çalışacak metotlarla birlikte bir yapı altında toplanmasına sarmalama ya da encapsulation denir. Ø Sarmalama, soyutlamayı tasarlanmış halidir. ØProgramlama dillerinde eskiden bu yana, soyut veri yapısı (abstract data type) ya da kullanıcı tarafından oluşturulmuş veri tipi (user-defined data type) adları altında var olan bir kavramdır. ØFakat bu yapılar, sarmalama örneği olmakla birlikte nesnemerkezli dillerin nesne kavramından farklı olarak daha teknik bir çıkış noktasına sahiptirler. 91
92 Sarmalama (Encapsulation) II ØNesne-merkezli dillerde en temel sarmalama mekanizması sınıftır (class). Ø Sınıflar, soyutlamaların gerçekleştirildiği yapılardır. ØNesneler ise soyutlamaların gerçek örnekleri, sınıfların nesneleridir. ØSarmalama ile bir sınıftan üretilecek olan nesnelerin veri yapıları ile davranışları, mantıksal bir birim haline getirilir. Soyut Soyutlama Sarmalama Sınıf Somut 92
93 Bilgi Saklama (Information Hiding) I ØBu yapıya sarmalama ya da encapsulation denmesinin sebebi, bu teknik ile sarmalanan yapının iç mekanizmasının dışarıdan saklanmasıdır. ØBu durum, bilgi saklama (information hiding) ile ifade edilir ve bazılarınca sarmalamanın içinde bir teknik olarak görülürken, bazılarınca sarmalamaya ek, tamamlayıcı bir teknik olarak ele alınır. Ø Bazen gerçekleştirme saklama (implementation hiding) ile birlikte anılır. ØSarmalama, bilgi saklama prensibiyle birlikte, bir sınıfın iç yapısını dışarıdan saklarken, arayüzü üzerinden dışarıya yani istemcilerine hizmet vermesini sağlar. 93
94 Bilgi Saklama (Information Hiding) II ØBağımlılığı düşük ve iç tutarlılığı (lowly-coupled and highlycohesive) yüksek sınıflar oluşturmak için nesne merkezli dillerde bilgi ve gerçekleştirme saklamayı (information and implementation hiding) sağlayan erişim niteleyiciler (access modifiers) vardır. ØBu yapılar sayesinde sınıflar ve sınıfların iç yapıları, dışarıdan doğrudan erişimden saklanabilir. ØLaw of Demeter 94
95 Erişim Niteleyiciler (Access Modifiers) Øİki tür erişim niteleyici vardır: Ø Sınıf erişim niteleyicileri Ø Üye erişim niteleyicileri ØErişim niteleyiciler için aşağıdaki anahtar kelimeler mevcuttur: Ø public Ø private Ø protected 95
96 Sınıf Erişim Niteleyicileri ØSınıflar için 2 seviyeli erişim söz konusudur. ØBu iki seviye public anahtar kelimesinin var oluduğu ve olmadığı 2 durumla belirlenir: Ø public: Public sınıflara her yerden erişilebilir. Ø public sınıflar, kendi ismine sahip.java kaynak dosyalarında bulunmalıdırlar. Ø Varsayılan (publickelimesi yok): Bu durumda sınıfa sadece içinde bulunduğu paketten ulaşılabilinir. Ø Bu erişime paket erişimi (package accessibility), varsayılan erişim (default accessibility) ya da arkadaşça erişim (friendly access) denir. 96
97 ClassA.java, ClassXX.java ve ClassZZ.java 97
98 Üye Erişim Niteleyicileri I ØÜyelere erişim için 4 seviye vardır: Ø public Ø protected Ø Varsayılan (default), hiç bir niteleyicinin kullanılmadığı durumdur. Ø private Øpublic olan üyelere her yerden erişilir. Øprivate olan üyelere, sadece içinde bulunduğu sınıftan erişilir, dışarıdan erişime tamamen kapalıdır. ØVarsayılan halde erişim sadece paket içindeki sınıflara açıktır. Øprotected, devralan alt sınıflarca erişime açıktır. 98
99 Üye Erişim Niteleyicileri II Niteleyici Kendisi Paketi Çocukları (Farklı Pakette) Herkes (Farklı Pakette) public protected (varsayılan) private
100 ClassP.java ve ClassA.java 100
101 public, protected, Varsayılan ve private Øpublic: Genel olarak metotlar public yapılır. Çünkü metotlar nesnenin arayüzüdür. Ø static ve final olan değişkenler de genelde publicolurlar. Øprotected: Başkasının ulaşamayıp, sadece devralan sınıfların ulaşabilecekleri protected yapılır. Ø protected, farklı paketteki devralmayan sınıflara private dır. ØVarsayılan: Sadece aynı pakettekilerin ulaşabileceği şeyler, varsayılan erişime tabi olur. Øprivate: Bütün üye verilerle sadece iç çalışma için oluşturulmuş metotlar private yapılır. 101
102 EncapsulatedElevator.java 102
103 Uygulama ØSadece bir nesnesi olan sınıflara "singleton" denir. Bu durumda bütün bilgi ve hizmet sadece, singleton olan sınıfın var olan tek nesnesi üzerinden verilir. Bunun için de diğer nesnelerin tek olan bir nesneye ulaşmaları gereklidir. ØBir sınıftan sadece bir nesne oluşturulabilmesi için gerekli yapıyı kurun ve daha fazla oluşturulmasını engelleyin. Sonra da oluşturulan bu nesneye genel bir erişim noktası sağlayın. ØSingleton sınıf yapmak yerine statik metotları olan bir sınıf yapmayı düşünür müsünüz? Tartışın. 103
104 public Erişim ve API ØAPI, Application Programming Interface in kısaltmasıdır. ØAPI, bir sınıfın ya da sistemin (bileşen, çerçeve vs.) public olan üyelerine denir. Ø Miras amacıyla protected olan üyeler de API ye dahildirler. ØAPI, bir yazılım yapısının arayüzüdür, tek iletişim noktasıdır. ØSınıflar ya da sistemler, ancak arayüzleri yani API leri ile ulaşılır ve hizmet alınır. 104
105 Arayüz ve Gerçekleştirme Øİyi bir soyutlama, sadece basit bir kavramı ya da fiziksel nesneyi soyutlamalıdır. Ø O şey ile ilgili her türlü gerekli bilgiyi bilmeli ve sorumluluğu yerine getirmeli, o şeyle ilgili olmayan hiçbir bilgiyi bilmemeli ve sorumluluğu yerine getirmemelidir. ØSoyutlamaların karmaşıklaşmaya başladığı her noktada yeni soyutlamalar oluşturulmalıdır. ØKarmaşık bir sistemin hiç bir parçası, bir diğer parçanın iç yapısına bağımlı olmamalıdır. ØNesneler birbirlerinin arayüzlerine bağlı olmalılar, veri yapıları ile gerçekleştirmelerine bağlı olmamalıdırlar. ØProgram to an interface, not an implementation. 105
106 API ve Java API si 106
107 Java API I ØAPI, Application Programming Interface in kısaltmasıdır. ØJava API si, Java nın sanal makinasının ve standart kütüphanelerinin arayüzüdür: Ø public ve Ø protected üyeleridir. ØWindows için JDK kurulumundaki jre dizinindeki lib dizinindeki rt.jar dosyasındaki yapıların arayüzlerini içerir. Ø Sadece JRE kurulmuşsa lib dizininde bulunur. ØMac için JDK 1.6 da "classes.zip 1.7 de rt.jar dır. ØJava SE Documentation olarak ds/index.htmladresinden indirilebilir. 107
108 Java API II ØJava API sinde var olan pek çok sınıf ve benzeri yapılar, tekerleği tekrardan keşfetmeden programlama yapmamızı sağlarlar. Øİyi bir Java cı, Java API sini sık ve etkin bir şekilde kullanır. 108
109 JDK Kaynak Kodu ØJava SE nin standart uygulaması olan JDK açık kaynak kodlu olduğu için istenirse ilgili sayfadan o da indirilebilir. Ø ds/index.html 109
110 Uygulama ØJava SE nin API sini Internet ten indirip açın. ØJava API sinde var olan paketleri ve içeriklerini inceleyin. ØJava API sinde aşağıdaki sınıfları inceleyin: Øjava.lang.System Øjava.lang.Math Øjava.lang.String 110
111 Uygulama I ØJava API sinde bulunan bir sınıfı kullanarak, bir metinde geçen tüm kelimeleri bulun, ya da İngilizce olarak: Ø Find all of the tokens in a string using a class found in Java API. ØBunun için Java API sinden bu iş için java.util paketinden uygun bir sınıf bulup, API sini kullanarak uygun kurucu ve metotların neler olduklarını belirleyin. a. Daha sonra bu kurucu ve metotları çağırarak verilen bir String nesnesinin kelimelerini tek tek bulup ekrana yazın. b. Daha sonra ayıraç olarak a harfini kullanarak String nesnesini parçalayın. c. String nesnesini, ayıraç olan a harfini de basacak şekilde parçalayın. 111
112 Uygulama II d. Daha sonra aynı şeyi java.lang paketindeki String sınıfı ile yapın. 112
113 Tekrar Kullanım (Reusability) 113
114 Tekrar Kullanım (Reusability) ØTekrar kullanım (reusability), var olan yazılım yapılarından yararlanarak, lego bloklarını kullanır gibi, yeni yazılım sistemleri geliştirmektir. Ø Tekrar kullanım, Yazılım Mühendisliği nin nirvanasıdır. ØAma yazılımların, soyut, aşırı karmaşık ve değişime zorunlu doğası, bir yazılım yapısının, kendisi için geliştirildiği sistemden başka bir yerde kullanılabilmesini son derece zorlaştırmaktadır. ØYine de nesne merkezli diller, en temel seviyede tekrar kullanımı amaçlayan mekanizmalara sahiptirler. 114
115 Farklı Seviyelerde Tekrar Kullanım ØYazılımda, çok farklı şeyler tekrar kullanıma konu olabilir: Ø Metotlar, tekrar kullanımın en basit ve sık uygulandığı yapılardır. Ø Sınıfların tekrar kullanımı daha geniş olmakla birlikte daha zordur. ØDaha karmaşık olan bileşenler (components) ve çerçeveler (frameworks) ile tekrar kullanım çok daha yüksek seviyede elde edilir ama başarılması bir o kadar da zordur. ØAyrıca iş süreçleri analizi, mimari yaklaşımlar, tasarım, test yapıları vs. hep tekrar kullanıma konudurlar. Ø Tasarım kalıpları, çok tipik tasarım tekrar kullanımına örnektir. 115
116 Yeni Bir Sınıf ØYeni bir sınıfa ihtiyaç duyulduğunda alternatifler şunlardır: Ø Pazardan bir tane satın almak, Ø Sıfırdan yazmak, Ø Var olan sınıflardan yararlanarak bileşik (composite) bir sınıf oluşturmak, Ø Var olan bir sınıftan devralarak bir alt sınıf (sub-class) oluşturmak. Øİdeal ve aynı zamanda en az muhtemel olan ilk seçenektir. Øİlk başta kolay gözüküp de uzun vadede en sıkıntılı olan ikinci seçenektir. Ø3. ve 4. seçenekler ise sırasıyla tekrar kullanımın, bileşik nesne oluşturma (composition) ve kalıtım (inheritance) şekilleridir. 116
117 Bileşim (Composition) 117
118 Bileşik Nesneler ØNesne birleştirme (object composition), birden fazla nesneyi bir araya getirilerek daha karmaşık nesneler oluşturmaktır. Ø Bileşik nesneler (composite object) genel olarak, başka sınıfların nesnelerini, nesne değişkeni olarak kendinde barındıran yapılardır. ØBu ilişki sahip olma (has-a) ilişkisi olarak ifade edilir. Ø Unutulmamalıdır ki sahip olma, referanslar üzerinden gerçekleşmektedir. ØNesne birleştirme ile nesneler arasında bir ilişki (association) ve aynı zamanda bir bağımlılık (coupling) oluşturulur. Ø Bu durum, nesneler arasındaki en yaygın ilişki kalıbıdır. 118
119 Car as A Composite Object 119
120 public class Car { private String make; private String model; private String year; private int distance; private int speed; public Engine engine; private Transmission tx; private Door[] doors; private Wheel[] wheels; public Car(..., int doorcount,...){ engine = new Engine(...); tx = new Transmission(...); doors = new Door[doorCount]; wheels = new Wheel[4];... } public void start(){ engine.start(); }... } public class Engine{ private String make; private int cc; private int horsepower; private int rpm;... } public class Wheel{ private int size;... } public class Door { private boolean closed;... } public class Transmission { private boolean manual;... } 120
121 CarTest.java 121
122 Bileşik Nesne ve Bileşenler ØBileşik nesneler, bileşenlerinden hizmet alırlar: Ø Bileşik nesne, kendisinden isteneni, bileşenlerinden hizmet alarak yerine getirir. Ø Buna, yönlendirme (delegation) denir. ØBileşik nesnelerin arayüzleri, bileşenlerinden bağımsızdır. Ø Bileşik nesne, bileşenlerinin arayüzlerini toplayıp, farklı bir arayüzle kulanımaaçar. 122
123 Bileşenlerin Yaratılması ØBileşik nesnelerde, bileşenlerin ne zaman oluşturulacağı karar verilmesi gereken bir konudur: Ø Tanıtıldığı yerde ya da kurucularda oluşturulabilir. Ø Bir başka yerde oluşturulup bileşik nesneye geçilebilir. Øİlk durum genel olarak daha sıkı (composition), ikinci durum ise daha gevşek bir ilişkiyi (aggregation) ifade edebilir. 123
124 Uygulama ØSelesi, ön ve arka tekerleği ile pedal takımı olan bir bisiklet sınıfı oluşturun. Ø Bisiklet sınıfı, belirtilen sınıflardan nesne değişkenlerine sahip olmalı ve kendisinden istenen hizmetlere, nesne değişkenleri yardımıyla cevap vermelidir. 124
125 Miras - Kalıtım (Inheritance) 125
126 Miras I ØMiras ya da kalıtım (inheritance), aralarında yapısal benzerlik bulunan nesneleri ifade etmekte kullanılan, en yaygın ikinci tekrar kullanım kalıbıdır. ØMiras, is-a (olma) ya da is-like-a (gibi olma) ilişkisidir. ØKendisinden miras alınan sınıfa ebeveyn (parent/base), miras alan sınıfa ise çocuk (child/sub-class) sınıf denir. ØTüretilen ya da çocuk sınıf, ebeveyninden, miras olarak alınabilecek üye değişkenler ile üye metotları devralır. ØDolayısıyla, çocuk sınıflar, ebeveynlerine, durum ve davranış açısından benzerler. 126
127 Miras II ØMiras yapısını kurmak için Java da extends anahtar kelimesi kullanılır: public class Employee{ protected int no; protected String name; protected int year; protected String department;... } public class Manager extends Employee{ protected String departmentmanaged;... } 127
128 Miras İlişkisi - I ØBu ilişki aşağıdaki okuma şekillerine imkan verir: Ø Her Manager/Bütün Managerlar aynı zamanda bir Employee dir. Ø Her Manager/Bütün Managerlar bir Employeegibidirler. ØÇocuk sınıf, ebeveyninde private olan yapıları devralamaz, ancak protected, public ya da aynı pakette ise varsayılan olanları devralır. Øprotected olan üye değişkenler halen dış dünyaya kapalıdırlar ama genelde public olan metotlar her halükarda devralınırlar. 128
129 Miras İlişkisi - II ØMiras ilişkisi ile tüm devralınabilecek olan ebeveyn üyeleri, çocuk sınıflar tarafından devralınır: Ø Nesne değişkenleri ve metotları Ø Sınıf değişkenleri ve metotları ØEbeveynin kurucuları ise çocukları tarafından devralınmaz. 129
130 Üye Erişim Niteleyicileri II (Tekrar) Niteleyici Kendisi Paketi Çocukları (Farklı Pakette) Herkes (Farklı Pakette) public protected (varsayılan) private
131 InheritanceExample.java ØÖnce, aynı paketteki ParentClass1 sınıfından devralmayı sonra da otherpakage paketindeki ParentClass2 sınıfından devralmayı deneyin, protected olan üyelerin davranışını gözlemleyin. 131
132 Başlatma (Initialization) 132
133 Mirasta Başlatma ØHiyerarşide altta bulunan her sınıf, ebeveynindeki bir kurucuyu çağırmak zorundadır. Ø Bu da her çocuk sınıfın nesnesinin içinde, gizli de olsa bir ebeveyn nesnesi var anlamına gelmektedir. ØBir sınıfın, ebeveynindeki bir kurucuyu çağırması super() ile olur. Øsuper() yoluyla yapılan kurucu çağrıları hiyerarşinin en tepesindeki sınıfa kadar devam eder. ØDolayısıyla en önce hiyerarşinin en tepesindeki sınıfın kurucusu çağrılır ve nesnesi oluşur. ØBunun dışında başlama sırasında değişen bir şey yoktur. 133
134 Başlama Sırası ØDolayısıyla başlama sırası, sınıf hiyerarşisindeki en yukarıdaki sınıftan aşağıya doğru olur. Her sınıftaki başlama sırası ise Ø Sınıf değişkenleri (statik başlatma blokları dahil) Ø Nesne oluşturuluyorsa Ø Nesne değişkenleri (nesne başlatma blokları dahil) Ø Kurucu çağrısı şeklindedir. ØBirden fazla sınıf ve nesne değişkeni olduğu durumda başlatma sırası, fiziksel sırayla belirlenir, önce gelen önce başlatılır. 134
135 InitializationOrder.java 135
136 Kurucular (Constructors) ØMiras söz konusu olduğunda kurucularla ilgili iki önemli nokta söz konusudur: Ø Kurucular devralınmazlar. Ø Dolayısıyla her türetilen sınıf kendi kurucusunu tanımlamak zorundadır. Ø Hiyerarşide altta bulunan her sınıf, ebeveynindeki bir kurucuyu çağırmak zorundadır. Ø Bu da her çocuk sınıfın nesnesinin içinde, gizli de olsa bir ebeveyn nesnesi var anlamına gelmektedir. 136
137 super() Çağrısı - I ØBir sınıfın, ebeveynindeki bir kurucuyu çağırması super() ile olur. Øsuper() çağrısı parametre geçmezse, ebeveyndeki argümansız kurucu çağrılmış olur. Øsuper() çağrısı tabi olarak parametre geçebilir, bu durumda ebeveyndeki bir akıllı kurucu çağrılmış olur. Ø Tipik olarak, ebeveynin tanımladığı durum bilgisi çocuk nesne oluşturulurken kurucusuna geçilir ve bu kurucu da bu durum bilgisini super() ile ebeveynindeki akıllı bir kurucuya geçer ki atamalar ebeveynin kurucusunda yapılsın. Ø Çocuk nesnenin kurucusuna geçilen ve ona has olan durum bilgisi ise ebeveyne geçilmez. 137
138 super() Çağrısı - II Øsuper() çağrısı içinde bulunduğu kurucuda ilk çalışan kod olmalıdır. Ø Dolayısıyla, çocuk nesne oluşmadan önce, içindeki gizli olan ebeveyn nesne oluşmalıdır. 138
139 Employee, Manager ve Director.java ØEmployee, Manager ve Director sınıflarının kurucularına dikkat edin. Øorg.javaturk.oop.ch09.factories.factory1.Test 139
140 InitializationOrder.java 140
141 Genişletme ve Yerine Geçebilme 141
142 Genişletme ØÇocuk sınıflar, ebeveynlerinden miras olarak devraldıkları yapılara ekleme yapabilirler: Ø Çocuk sınıflar, genel olarak, ebeveynlerinde olmayan, yeni üye değişkenlere ve yeni metotlara sahip olurlar. Ø extends anahtar kelimesi zaten bu genişletmeyi ifade etmektedir. ØBu durumda türetilen çocuk sınıf, yeni üye değişkenlerle daha zengin bir yapıya, yeni metotlarla da daha geniş bir arayüze sahip olur. 142
143 Yerine Geçebilme I ØMiras ilişkisinde çocuk sınıfın arayüzü, en azından ebeveyninin ara yüzüdür. Ø Çocuk sınıflar, ebeveynlerinden devraldıkları arayüze eklemeler yaparak daha geniş bir ara yüze sahip olup, daha çok iş yapar hale gelseler bile, ebeveynlerinin arayüzünü desteklemeye devam ederler. Ø Bu durum, üye değişkenler için de böyledir, yani ebeveynde erişilen her değişkene, çocuklarda da erişilir. Ø Ama prensip olarak değişkenlerin protected olduğunu ve dışarıdan ulaşılamadığını varsayıyoruz. ØDolayısıyla, çocuk sınıflar, ebeveynlerinin sağladığı her özelliği, değişken ya da arayüz, sağlamak zorundadırlar. 143
144 Yerine Geçebilme II ØBu durum, yerine geçebilme (substitutability) olarak ifade edilir ve hiyerarşide aşağıdan yukarıya doğru çalışır. Ø Yani, ebeveynin olduğu her yerde, ebeveynin çocuklarından birisi olabilir. Ø Her Manager aynı zamanda bir Employee dir. Ø Yani, patron, bana bir çalışan çağırın dediğinde, ona bir Manager gelirse, patronun isteği yerine gelmiş olur. Ø Ya da patron, tüm çalışanlar toplansın dediğinde, Manager beni çağırmıyor diyemez. 144
145 Genelleştirme-Özelleştirme ØMiras ilişkisi, bir genelleştirmeözelleştirme (generalizationspecialization) ya da genel-özel (generic-specific) ilişkisidir. ØYani hiyerarşide yukarı çıkıldıkça daha genel nesneler, aşağı inildikçe, o nesnelerin daha özel halleri bulunur. ØAma yerine geçebilme özelliği her zaman geçerlidir: Ø Her Director aynı zamanda hem bir Manager hem de bir Employee dir. 145
146 Employee, Manager ve Director.java Øorg.javaturk.oop.ch09.factories.factory2.Test 146
147 Uygulama ØBir üniversitedeki öğrencileri, aralarındaki miras ilişkisini göz önüne alarak modelleyin. ØHangi durumlarda genişletme söz konusudur tartışın. 147
148 Overriding (Ezme) 148
149 Overriding Ezme - I ØNesneler, ebeveynlerinden devraldıkları metotların arayüzlerini değiştirmeden, kodunu değiştirebilirler. ØBuna overriding ya da ezme denir. ØYani çocuk nesneler, ebeveynlerindeki sorumluluğu, farklı bir şekilde yerine getirmeyi tercih edebilirler. ØOverriding ile aynı sorumluluk farklı şekillerde yerine getirilir: ØSorumluluk aynıdır, çünkü arayüz (interface) aynıdır, ama sorumluluğu yerine getirme şekli (implementation) farklıdır. ØBu şekilde override edilen metotlara polymorphic (çok şekilli) metotlar denir. 149
150 Overriding Ezme - II ØBu şekilde override edilen metotlara polymorphic (çok şekilli) metotlar denir. ØÇünkü sorumluluk bir tanedir çünkü arayüz bir tanedir ve ebeveynde tanımlanır. ØAma sorumluluğu yerine getirme yani metot birden fazladır. ØBu yüzden override edilebilen metotlara polymorphicdenir. 150
151 Employee, Manager ve Director.java Employee üzerinde tanımlanan printinfo() ve calculatesalary() metotlarının Manager ve Director için override edildiğini gözlemleyin. 151
152 Overriding Ezme - III ØOverride, sadece nesne metotları için geçerlidir. Ø Nesne metotlarını aynı arayüzle alt sınıflarda tekrar tanımlarsanız, onları override etmiş (ezmiş) olursunuz. Ø Üye değişkenleri aynı isimle alt sınıflarda tekrar tanımlarsanız, ebeveyndekileri devralmamış, sadece saklamış olursunuz. Ø Çünkü overriding değişkenler için tanımlı değildir. ØStatik metotlar da override edilemezler. ØPolymorphic davranış sadece nesne metotları için geçerlidir, üye değişkenler ve statik metotlar polymorphic değildirler. ØPolymorphismi ileride ele alacağız. 152
153 Bir Nokta! public class SubClass extends ParentClass{ private int i; void f(){} } class ParentClass{ public int i; public void f(){} } ØYukarıdaki kod derleme hatası verecektir? ØNeden? 153
154 Daha Kısıtlayıcı Olarak Override ØOverride ederken, devralınan metodu daha kısıtlayıcı bir erişim belirteciyle tanımlayamazsınız. ØAksi taktirde, ebeveyn üzerinden ulaşılan bir metodun, çocuk nesneler üzerinden ulaşılamaması söz konusu olurdu! 154
155 Override Ederken Alt Tip Parametre ØJava SE nin 1.5 sürümünden itibaren, override ederken, devralınan metodun parametreleri, alt tipleriyle yer değiştirebilir. 155
156 Özet ØBu bölümde, Java ile Nesne Merkezli Programlama ya Giirş eğitiminin nesne ile ilgili konuları özetlendi. 156
157 Ödevler 157
158 Ödevler 158
3. Bölüm Soyut Sınıflar (Abstract Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu
Java ile Nesne Merkezli ve Fonksiyonel Programlama 3. Bölüm Soyut Sınıflar (Abstract Classes) Akın Kaldıroğlu Kasım 2015 Küçük Ama Önemli Bir Konu Ø Bu dosya ve beraberindeki tüm, dosya, kod, vb. eğitim
www.javaturk.org Akın Kaldıroğlu www.javaturk.org Java ile Nesne Merkezli Programlama
Akın Kaldıroğlu Java ile Nesne Merkezli Programlama Ocak 2014 Küçük Bir Konu Ø Bu dosya ve beraberindeki tüm, dosya, kod, vb. eği>m malzemelerinin tüm hakkı Akın Kaldıroğlu na aier. Ø Bu eği>m malzemelerini
Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance
Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();
5. Bölüm Alt Sınıflar (Nested Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu
Java ile Nesne Merkezli ve Fonksiyonel Programlama 5. Bölüm Alt Sınıflar (Nested Classes) Akın Kaldıroğlu Ocak 2017 Küçük Ama Önemli Bir Konu Ø Bu dosya ve beraberindeki tüm, dosya, kod, vb. eğitim malzemelerinin
public static int Toplam int x, int y
static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.
Nesne Yönelimli Programlama
1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Programlama Dili ve Yazılım Tasarımı, Altuğ B. Altıntaş, Papatya
BİL-141 Bilgisayar Programlama I (Java)
1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,
Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )
Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts
YZM 2105 Nesneye Yönelik Programlama
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 - 5 Nesneye Yönelik Programlamaya Giriş Bu
Sunum İçeriği. Programlamaya Giriş 22.03.2011
Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor
Erişim konusunda iki taraf vardır:
Erişim Erişim konusunda iki taraf vardır: Kütüphaneyi kullanan kişiler (client) Kütüphaneyi yazan kişiler Paket (package) Paketler kütüphaneyi oluşturan elemanlardır. PaketKullanim.java Varsayılan Paket
BİL-142 Bilgisayar Programlama II
BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri
Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.
Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir
Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1
Görsel Programlama DERS 02 Görsel Programlama - Ders02/ 1 Kodun Tekrar Kullanımı ve Kalıtım(Inheritance) Nesneye yönelik programlamanın diğer programlama paradigmalarına karşı bir avantajı kodun yeniden
5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi
5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını
Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1
Paket Erişimleri Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1 Erişim Erişim konusunda iki taraf vardır: Kütüphaneyi kullanan kişiler (client) Kütüphaneyi yazan kişiler Altuğ B. Altıntaş
İç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.
İçerik Geçen ders: Kalıtım ( inheritance ) Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama Ders #5 (18 Kasım 2009) Bu ders: Kalıtım ( inheritance ) tekrar ziyaret Java da super kullanımı
Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1
Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit
ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kalıtım Kavramı Java da Çok Biçimlilik Kavramı Fonksiyonların Çok Biçimliliği Yapıcı Fonksiyonun Çok Biçimliliği Java da Kalıtım Kavramı 4 Kalıtım;
HSancak Nesne Tabanlı Programlama I Ders Notları
METOTLAR Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilirler. Metot ve fonksiyon olarak ifade edilecek kavramlar aynı anlamda kullanılacaktır. Her çalışan C# programı
Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama
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ı
BTEP243 Ders 3. class Yazım Kuralı:
BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin
Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.
Ders İçeriği An introduction to Object-oriented programming with Java Third Edition Update Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Nesneye Yönelik Öğr.
Programlama Dillerinde Kullanılan Veri Tipleri
Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs
Java Programlamada Paket Yapısı Ve Import
Java programlamada paket yapısı ve import Java Programlamada Paket yapısı ve Java programları paketlerden oluşmaktadır. Paketlerin içinde sınıflar ve arayüzler bulunur. İstenirse var olan paketlerden başka
Kalıtım (Inheritance)
Kalıtım (Inheritance) Kocaeli Üniversitesi Kalıtım (Inheritance) Kodların çok kez kullanımı (Software reusability) Mevcut Sınıflardan Yeni Sınıflar Oluşturma Mevcut sınıfın değişken ve fonksiyonları kullanılabilir.
İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama
İçerik Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili kavramlar Bu hafta:
NESNEYE YÖNELİK PROGRAMLAMA
NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem
Temel Kavramlar BBS-515 Nesneye Yönelik Programlama
Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Ders #2 (2 Kasım 2009) İçerikç Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;
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.
Bölüm 20 20 Arayüzler Arayüz bir sınıf değildir. Arayüz yazmak sınf yazmaya çok benzer ancak ikisi birbirinden farklı konseptlerdir. Sınıf bir nesnenin özelliklerini ve davranışlarını belirtirken; bir
Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar
Nesneler ve Türler Sınıflar ve Yapılar Arasındaki Farklılıklar Sınıf Üyeleri Değer ve Referans Türde Olan Aktarımlar Yapıcılar ve Statik Yapıcılar Read-Only Statik Sınıflar Object Sınıfı Sınıflar Sınıflar
BMH-303 Nesneye Yönelik Programlama
BMH-303 Nesneye Yönelik Programlama Kurucu metotlar (constructors) ve statik deyimi Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği Kurucu Metotlar (Constructors) Kurucu metot çeşitleri Varsayılan
PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN
PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN PAKET (PACKAGE) Paketler kütüphaneleri oluşturan elemanlardır. import java.io.bufferedreader;
2. Bölüm Çok Şekillilik (Polymorphism) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu
Java ile Nesne Merkezli ve Fonksiyonel Programlama 2. Bölüm Çok Şekillilik (Polymorphism) Akın Kaldıroğlu Kasım 2015 Küçük Ama Önemli Bir Konu Ø Bu dosya ve beraberindeki tüm, dosya, kod, vb. eğitim malzemelerinin
ELN1001 BİLGİSAYAR PROGRAMLAMA I
ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave
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:
BÖLÜM 4 Değişken Tipleri 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: type identifier [ = value][, identifier [=
MOBIL UYGULAMA GELIŞTIRME
MOBIL UYGULAMA GELIŞTIRME PELIN YILDIRIM FATMA BOZYIĞIT YZM 3214 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Bu Derste Java Programlama (Crash Course) Class, Nesne, Metodlar, Overloading,
C++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 9: Sınıf İçerik Sınıf Tanımı Nesne Tanımı İkili Kapsam Çözme Operatörü UML ile Sınıfların Gösterimi 2 Sınıf kavramı, nesne-tabanlı programlamanın temelini oluşturur.
Nesne Yönelimli Programlama
1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Programlama Dili ve Yazılım Tasarımı, Altuğ B. Altıntaş, Papatya
abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;
abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance
Yrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,
JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ
JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra
Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1
Bölüm 11 Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 11. Bölüm konuları Soyutlama kavramı Veri soyutlamasına giriş Soyut veri tipleri için tasarım konuları Dil örnekleri Parametreli
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
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
Java 2 Standart Edition SDK Kurulum ve Java ya Giriş
Kurulum için ilk önce Sun Microsystems in sitesinden uygun J2SE sürümünü indirin. Ben J2SE v1. 4. 2_16 Windows Installer paketini kullandım J2SE SDK Kurulumu aşağıdaki gibi başlayacaktır. 1 Kurulum tamamlandıktan
YZM 2105 Nesneye Yönelik Programlama
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;
/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/
Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void
Java Class Yapısında Finalize Metotunun Kullanımı
Java'da finalize() Metodu: Java dili kullanılmayan nesneleri silmek için arka planda çalışan bir sisteme sahiptir. Bu yüzden C++ gibi dillerde dinamik nesne tanımlarında mutlaka yer alması gereken nesneyi
Klavyeden Basit Giriş/Çıkış İşlemleri
Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden veri girilmesi, girilen verilere çeşitli işlemler uygulandıktan sonra ekrana yazdırılması ya da herhangi bir yazıcıdan çıktı alınması gibi işlemlerdir. Javada
PROGRAMLAMAYA GİRİŞ FONKSİYONLAR
PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya
Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1
Öğr. Gör. Serkan AKSU http://www.serkanaksu.net http://www.serkanaksu.net/ 1 JavaScript JavaScript Nedir? Nestcape firması tarafından C dilinden esinlenerek yazılmış, Netscape Navigator 2.0 ile birlikte
Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1
Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1 Arayüz (Interface) Arayüzler, soyut sınıfların bir üst modeli gibi düşünülebilir. Arayüzler tamamen birleştirici bir rol oynamaları
MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI
MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI 2011 2012 Güz Yarıyılı Java Programlama YZM 363 5 AKTS 4. yıl 7 yarıyıl Lisans Seçmeli 3 s/hafta 3 kredi Teorik: 3 s/hafta
Java Dersi. Altuğ Bilgin Altıntaş
Java Dersi Altuğ Bilgin Altıntaş Bu Dönem Hakkında Corba Servlet RMI Temel Kısım EJB JSP XML 2 JDBC JNI Çalışma Evreleri 6 Çalışma Evreleri 7 Java dosyasının hali 7 İlk Java uygulaması 7 Ciddi bir uygulama
Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2
1 Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 Eclipse Mimarisi 4 Java Teknolojisine Genel Bir Bakış 6 Taşınabilirlik 6 Java Derleyicisi ve Bytecode 6 Java Sanal Makinası (Java Virtual Machine - JVM)
// hataları işaret eden referans
System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin
HSancak Nesne Tabanlı Programlama I Ders Notları
DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar
Göstericiler (Pointers)
C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi
7. HAFTA. Erişim Belirleyiciler
7. HAFTA Erişim Belirleyiciler Java dilinde 4 tür erişim belirleyicisi vardır; bunlar friendly, public, protected ve private dir. Bu erişim belirleyiciler global alanlar (statik veya değil) ve yordamlar
Nesneye Yönelik Programlama (OOP) 7.Hafta
Nesneye Yönelik Programlama (OOP) 7.Hafta Örnek : Yapılar vs Sınıflar Yapılar ve sınıflar büyük oranda benzerlik gösterirler. Yapıların sakladığı veriler her zaman public yani erişime açıktır. Sınıflarda
Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?
Sınıf Diyagramları Sınıf diyagramı statik bir diyagramdır. Bir uygulamanın statik görünümünü temsil eder. Sınıf diyagramı sadece bir sistemin farklı yönlerini görselleştirmek, açıklamak ve belgelemek için
BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler
BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin
Ders 8 Konu Özeti ve Problemler
Ders 8 Konu Özeti ve Problemler C# ve Nesne Yönelimli Programlamanın 3 Prensibi Kapsülleme (Encapsulation) Nesne yönelimli programlamanın ilk prensibi kapsülleme (encapsulation) olarak adlandırılır. Bu
Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No.
Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013 Ad, Soyad Öğrenci No. : : Öğretim Üyesi: Doç. Dr. Zeki BAYRAM Süre: 100 dakika Talimatlar:
Lambda İfadeleri (Lambda Expressions)
Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki
C++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 10: Yapıcı ve Yıkıcı Fonksiyonlar Yapıcı Fonksiyonlar İçerik Yapıcı Fonksiyon Tanımı Üyelere İlk Atama Yapıcı Fonksiyonu Yükleme Yapıcı Fonksiyon Çağırımı Kopya
Uzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Diziler Dizi Tanımlama ve İlk Değer Atama Dizi Elemanlarının Kullanılması Dizi İşlemleri Java da Diziler JAVA DA DİZİLER 4 Dizi; tek bir veri tipinde,
Yrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni
Yazılım Kodlama ve İ simlendirme Standartları v1.0
Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.
Nesne Yönelimli Programlama
Nesne Yönelimli Programlama Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu, M. Özbayoğlu, M. Erten, O. Ergin kitabı kullanılarak hazırlanmıştır. Konular Giriş Alt Sınıflar
Ders 8: Metotlar. barisgokce.com
Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı
Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:
Bölüm 24 Java Ağ Uygulamaları 24.1 Java Appletleri Applet, Web tarayıcısında çalışan bir Java programıdır. Bir applet, Java uygulaması için tamamen fonskiyonel olabilir çünkü bütün Java API ye sahiptir.
BİL-142 Bilgisayar Programlama II
BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon Tanımı Fonksiyon
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI) Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü [email protected] Ders Web
Nesne Tabanlı Programlama
Nesne Tabanlı Programlama Ders Notu - 3 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Sınıflar ve Fonksiyonlar Tekrar kullanılabilir kodlar 1 Nesne Tabanlı Tasarım
Java ile Nesneye Yönelik Programlama (Object Oriented Programming)
Java ile Nesneye Yönelik Programlama (Object Oriented Programming) Giriş Yrd. Doç. Dr. Aybars UĞUR Örnek 1 Bir Yolcu sınıfı, yolcu1 nesnesi oluşturulması ve kullanılması class Yolcu String ad; String soyad;
Pointer Kavramı. Veri Yapıları
Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar
YZM 2105 Nesneye Yönelik Programlama
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 - 6 Kalıtım (Inheritance) - I Bu bölümde;
MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş
MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü [email protected] Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101
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.
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. [10 puan] int param = 30; int result = 300; if (param > 45) result
Decorator Tasarım Şablonu
Decorator Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com http://www.javadergisi.com Mevcut bir sınıf hiyerarşisini ya da sınıfın yapısını değiştirmeden, oluşturulan
Dizi ( Array ) ve Dizgi ( String )
Java da Dizi ( Array ) ve Dizgi ( String ) Tanımlama BBS-515 Nesneye Yönelik Programlama Ders #6 (25 Kasım 2009) İçerikç Geçen ders: Kalıtım ( inheritance ) -- tekrar ziyaret Java da super kullanımı Java
NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM
NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM 2014) //Class (Sınıf) // Sınıf (class) soyut veri tipidir. // Nesne (object) sınıfın somutlaşan bir cismidir. // static : nesnesi oluşturulmaz.
Bölüm 9. Altprogramlar ISBN
Bölüm 9 Altprogramlar ISBN 0-321-49362-1 Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda
Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1
Görsel Programlama DERS 01 Görsel Programlama - Ders01/ 1 Takdim Planı Nesneye Dayalı Programlama Kavramı Nesne, Sınıf Kavramı Java Programlama Dili Java Programlama Dili Temel Özellikleri Java Sürümleri
Operator Aşırı Yükleme (Operator OverLoading)
Operator Aşırı Yükleme (Operator OverLoading) Operator Aşırı Yükleme Operatör metotları bir nesnenin ifadeler içinde operatörlerle kullanıldığı zaman davranışını belirler. Temel veri türleri için operatörler
Genel Programlama II
Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri
BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)
1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.
BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 7 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Java Programlama Dili ve Algoritmadan Kodlamaya Geçiş) Yrd. Doç. Dr. İbrahim Küçükkoç
C# Metotlar ve Metot Tanımlama
C# Metotlar ve Metot Tanımlama Metot Kavramı : Metotlar bir program içerisinde aynı işi gerçekleştiren satırları belirli düzende sadece bir kez oluşturarak gerektiğinde tekrar tekrar kullanabilmemizi sağlayan
ALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ [email protected] YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Bellek ve Adresleme İşaretçi Kavramı
Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma
Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma C Programlama Dr. Serkan DİŞLİTAŞ 7.1. Metot Kavramı Programlama dillerinde bütün kod satırlarının
1 PROGRAMLAMAYA GİRİŞ
İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)
HSancak Nesne Tabanlı Programlama I Ders Notları
Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.
Üst Düzey Programlama
Üst Düzey Programlama Yazılımda Günlükleme (Logging) Üst Düzey Programlama-ders07/ 1 Günlükleme -Logging Tüm büyük çaplı uygulamalarda günlükleme(logging) ihtiyaçları bulunmaktadır. Bir uygulamanın hata
Java da İstemci Tarafı Uygulamalar
Java da İstemci Tarafı Uygulamalar ( Applets ) BBS-515 Nesneye Yönelik Programlama Ders #7 (7 Aralık 2009) İçerikç Geçen ders: Java da dizi ( array ) ve dizgi ( String ) tanımlama Örnekler Bu ders: 1.
Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler
Programlama Dilleri 1 Ders 12: Belirleyiciler ve Niteleyiciler Genel Bakış Giriş Yer Belirleyicilerle Bildirim İşlemi auto Belirleyicisi register Belirleyicisi static Belirleyicisi Statik ve Global Değişkenlerin
WEB PROGRAMLAMA II. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu
WEB PROGRAMLAMA II Öğr. Gör. M. Mutlu YAPICI Ankara Üniversitesi Elmadağ Meslek Yüksekokulu Ders İzlencesi Hafta Modüller/İçerik/Konular 1. Hafta Oturum yönetimi 2. Hafta Cookies kullanımı ve oturum yönetimi
