6 Metodlar.

Slides:



Advertisements
Benzer bir sunumlar
Yrd. Doç. Dr. Mustafa Akkol
Advertisements

Prof.Dr.Şaban EREN Yasar Üniversitesi Fen-Edebiyat Fakültesi
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
Nesnelerin Özellikleri. - Üye nesneler - friend belirtesi - Nesnelerin operatörlere yüklenmesi - this yerel (lokal) değişkeni - inline tanımlı üye fonksiyonlar.
Değişkenler ve bellek Değişkenler
DOĞAL SAYILAR.
T.C. İNÖNÜ ÜNİVERSİTESİ Arapgir Meslek YÜKSEKOKULU
Java Uygulamalarına Giriş
Programlama-II (Java ile Bilgisayar Programlama)
Atlayarak Sayalım Birer sayalım
BEIER CÜMLE TAMAMLAMA TESTİ
Diferansiyel Denklemler
ÖRNEKLEME DAĞILIŞLARI VE TAHMİNLEYİCİLERİN ÖZELLİKLERİ
Bölüm 6 – Metodlar ve Parametreler
Bölüm 4 – Kontrol İfadeleri:1.kısım
4 Kontrol Yapıları: 1.Bölüm.
Metodlar ve Parametreler
KIR ÇİÇEKLERİM’ E RakamlarImIz Akhisar Koleji 1/A.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
HİSTOGRAM OLUŞTURMA VE YORUMLAMA
Prof. Dr. Leyla Küçükahmet
CAN Özel Güvenlik Eğt. Hizmetleri canozelguvenlik.com.tr.
HAZIRLAYAN:SAVAŞ TURAN AKKOYUNLU İLKÖĞRETİM OKULU 2/D SINIFI
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Dördüncü Grup İkinci Harf B sesi sunumu Mürşit BEKTAŞ.
Bölüm 3 – Yapısal Programlama
ÖRNEKLEM VE ÖRNEKLEME Dr.A.Tevfik SÜNTER.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
TÜRKİYE KAMU HASTANELERİ KURUMU
İmalat Yöntemleri Teyfik Demir
NESNE TABANLI PROGRAMLAMA -METOTLAR-
METODLAR.
PÇAĞEXER / SAYILAR Ali İhsan TARI İnş. Yük. Müh. F5 tuşu slaytları çalıştırmaktadır.
Chapter 7: Using Methods. Metotları ve Kodlamayı Gizlemeyi Anlama Metot – Kapsüllenmiş ifadeler serisini gerçekleştiren bir görev – Kullanılan metodun.
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
Görsel C# Programlama Güz 2009 (6. Hafta).
Ses Kontrol Metodlar ile ilgili son birkaç söz Tekrar: Programlama için başlıca 3 model.
FONKSİYONLAR.
4 X x X X X
Mukavemet II Strength of Materials II
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Nesne.
Akış Kontrol Mekanizmaları
Chapter 6: Using Arrays.
 2006 Pearson Education, Inc. All rights reserved Kontrol İfadeleri: 2. Bölüm.
Yard. Doç. Dr. Mustafa Akkol
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Fonksiyonlar –Programı modüler hale getirir –Yerel değişkenler,
Bölüm 5 - Fonksiyonlar index 5.1 Giriş 5.2 C de Program Modülleri
Önceki Dersi Hatırlama !!
ANA BABA TUTUMU ENVANTERİ
1 DEĞİŞMEYİN !!!
Bilgisayar Programlama
Diferansiyel Denklemler
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Çocuklar,sayılar arasındaki İlişkiyi fark ettiniz mi?
JAVA’DA DİZİLER Dr.Galip AYDIN.
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Veri.
ÇOK DEĞİŞKENLİ FONKSİYONLARDA
Bölüm 5 - Fonksiyonlar index 5.1 Giriş 5.2 C de Program Modülleri
Proje Konuları.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Amaçlar Bu derste öğrenilecekler: –Uygulamaları “method”
PÇAĞEXER / SAYILAR Ali İhsan TARI İnş. Yük. Müh. F5 tuşu slaytları çalıştırmaktadır.
Diferansiyel Denklemler
Bölüm 7 - Diziler İçerik 7.1 Giriş 7.2 Diziler 7.3 Dizileri Tanımlama 7.4 Dizileri Kullanan Örnekler 7.5 Referanslar ve Referans Parametreler.
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
 2006 Pearson Education, Inc. All rights reserved. Görsel C# ile Windows Programlama Güz 2009 (2. Hafta)
Görsel C# ile Windows Programlama
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
C Programlama Dili Bilgisayar Mühendisliği.
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
Sunum transkripti:

6 Metodlar

OBJECTIVES In this chapter you will learn: How static methods and fields are associated with an entire class rather than specific instances of the class. To use common Math methods available in the Java API. To understand the mechanisms for passing information between methods. How the method call/return mechanism is supported by the method call stack and activation records. How packages group related classes. How to use random-number generation to implement game-playing applications. To understand how the visibility of declarations is limited to specific regions of programs. What method overloading is and how to create overloaded methods.

6.1   Giriş 6.2   Javada Program Modülleri 6.3   static Metodlar, static alanlar (Fields) ve Math sınıfı 6.4   Çok parametreli metodların tanımlanması 6.5   Metodların tanımı ve kullanımı hakkında bazı bilgiler 6.6   Metod çağırma yığını 6.7   Argüman Promosyonu ve Casting 6.8   Java API Paketleri 6.9   Örnek: Rastgele sayı jeneratörü 6.9.1  Genel ölçeklendirme(Generalized Scaling) ve rastgele sayıların ötelenmesi (Shifting of Random Numbers) 6.9.2  Hata bulma ve test etmek için rastgele sayının tekrar edebilmesi

6.10   Örnek: Şans oyunu (Enumeration tanımı) 6.11   Tanım alanı (Scope of Declarations) 6.12   Metod yüklemesi (Method Overloading) 6.13   GUI ve Grafik örneği: Renkler ve içi dolu şekiller 6.14   Yazılım mühendisliği örneği: Sınıf işlemlerini belirleme (Identifying Class Operations)

6.1 Giriş Böl ve yönet tekniği (Divide and conquer) Küçük modüllerden büyük programlar oluşturma Metod kullanarak yapılabilir. static metodlar bir obje üretilmeden de çağırılabilir. Rastgele sayı jeneratörü Sabitler (Constants)

6.2 Javada Program Modülleri Java API’si (Application Programming Interface) Java sınıf kütüphanesi olarak da bilinir. Önceden tanımlanmış metodlar ve sınıflar içerir. Birbiriyle ilişkili sınıflar aynı pakette toplanmıştır. Matematik metodları, string/karakter işlemleri, giriş/çıkış işlemleri, database işlemleri, network, hata bulma, dosya işlemleri bunlardan bazılarıdır.

Good Programming Practice 6.1 Java API si hakkında bilgi adresi : java.sun.com/j2se/5.0/docs/api/index.html

Yazılım mühendisliği açısından Tekerleği yeniden keşfetmeye gerek yok. Uygun olduğunda hazır kütüphaneden faydalanmalıdır. Bu, hataları azaltacağı gibi program yazma süresini de kısaltır.

6.2 Javada Program Modülleri Metodlar Diğer programlama dillerinde fonksiyon veya prosedür de denilir Programları birbirinden ayrı kendi işini yapan birimler olarak modülarize etmektir Böl ve yönet yaklaşımıdır Modüller başka programlar tarafından da kullanılabilir Kod tekrarını önler

Hata önleme Bir işlemi yapan küçük bir metodu test etmek, hatasını bulmak, büyük bir metoddan daha kolaydır.

Fig. 6.1 | Hiyerarşik patron-metod / işçi-metod şeması.

6.3 static Metodlar, static Alanlar ve Math sınıfı static metod (veya sınıf metodu) Bir tek objeye has değildir. Tüm bir sınıf için aynıdır. static metod çağırma formatı: SınıfAdı.metodAdı( argümanlar ) Math sınıfındaki tüm metodlar statikdir örnek: Math.sqrt( 900.0 )

Yazılım mühendisliği açısından Math sınıfı java.lang paketi içindedir. Compiler tarafından kendiliğinden gelir. Kullanmak için import etmeye gerek yoktur.

6.3 static Metodlar, static Alanlar ve Math sınıfı Sabitler Keyword final İlk değer verildikten sonra değeri bir daha değişmez static alanlar (static sınıf değişkenleri) Bu değişkenlerin tek kopyası olur ve tüm objeler aynısını kullanır. Math.PI ve Math.E Math sınıfının final static alanlarıdır

Fig. 6.2 | Math sınıf metodları.

6.3 static Metodlar, static Alanlar ve Math sınıfı main Metodu main static bir metoddur Herhangi bir sınıf main metoduna sahip olabilir Komut satırından çalıştırmak için java komutundan sonra main’in bulunduğu sınıfın ismi yazılır. Böylece JVM o sınıftaki main i çalıştırır.

6.4 Çok parametreli metodların tanımlanması Çok parametreli metodlar tanımlanırken parametreler virgüllerle ayrılmış bir liste olarak belirlenir. Çağırılırken Argümanların gönderilmesinde sayı, sıra ve tipler tanımdaki sayı, sıra ve tiplerle uyuşmalıdır.

Outline (1 of 2) Prompt the user to enter and read three double values MaximumFinder.java (1 of 2) Prompt the user to enter and read three double values Call method maximum Display maximum value

Outline Declare the maximum method (2 of 2) Compare y and maximumValue MaximumFinder.java (2 of 2) Compare y and maximumValue Compare z and maximumValue Return the maximum value

Outline Create a MaximumFinder object Call the determineMaximum method MaximumFinderTest .java Call the determineMaximum method

Programlama hataları Parametreleri tanımlarken aynı tipteki parametreler float x, y şeklinde yazılmamalıdır. float x, float y olarak tipleri parametre listesinde ayrı ayrı belirtilmelidir

6.4 Çok Parametreli metodların tanımı Math.max metodu Math.max( x, Math.max( y, z ) ) şeklindeki kullanım y ve z den büyük olanı x ile karşılaştırıp en büyük olanı döndürür. String birleştirme String birleştirme operatörü + dır. İki string’i birleştirip yeni bir String oluşturur. + operatorünü bir String ve bir de başka tip değişken ile kullanmak String ile o değişkenin değerinin String gösterimini birleştirir Diğer değişken obje ise, String gösteriminin oluşturulması için toString metodunun çağırılması gerekir

Programlama hatası Program yazılırken string değer bir satıra sığmadığı durumda kalan kısmını alt satıra yazmak syntax hatasına sebep olur. Bu durumda string değer parçalanıp + operatörü kullanılarak birleştirilir.

Programlama hatası + öperatörünün aynı zamanda toplama işleminde kullanılması karışıklığa yol açabilir. Java işlemleri soldan sağa yapar. Örneğin, y nin değeri 5 iken, "y + 2 = " + y + 2 sonucu string olarak "y + 2 = 52", dir. "y + 2 = 7“değildir, çünkü ilk olarak y nin değeri(5), "y + 2 = “ stringi ile birleştirilir, sonra 2 yeni string "y + 2 = 5“ ile birleştirilir. "y + 2 = " + (y + 2) işlemini sonucu "y + 2 = 7“ dir.

6.5 Metod kullanımı ve tanımı Metod çağırmanın üç yolu: Aynı sınıftan başka bir metodu çağırmak için metod adının kendisi kullanılır. Bir nesne için bir metod çağırılacaksa, obje isminden sonra (.) ve metod adı yazılır Bir sınıfın static bir metodu çağırılacaksa, sınıf adından sonra (.) ve metod adı yazılır Bir static metod aynı sınıftaki başka bir non-static metodu çağıramaz !

6.5 Metod kullanımı ve tanımı Kontrolün çağıran satıra geri dönmesinin iki yolu: Metod bir sonuç döndürmüyorsa: Program akışı metodun son bitiş parantezine geldiğinde geri döner Metod bir sonuç döndürüyorsa: Program return işlem; satırını yürütünce Önce işlem yapılır ve sonuç çağırana gönderilir

Programlama hatası Metod tanımlaması sınıf tanımlamasının dışında veya başka bir metodun içinde yapılamaz. (syntax hatası)

Programlama hatası Metod başlığındaki parametre listesinin sonundaki parantezden sonra noktalı virgül konulması hatadır. ( syntax error)

Programlama hatası Metod parametresini metodun içinde yerel değişken olarak yeniden tanımlamak derleme hatasıdır. (compilation error)

Programlama hatası Sonucu döndüren bir metodda sonucu döndürmeyi unutmak derleme hatasıdır.(compilation error) Döndürme tipi olarak void yerine başka bir şey yazıldıysa mutlaka return satırı bulunmalıdır ve başlıkta belirtilen tipte bir değer döndürmelidir. void olarak tanımlanmış bir metodun bir değer döndürmesi derleme hatasıdır. (compilation error)

6.8  Java API Paketleri import java.util.Scanner; komutu programcuının Scanner sınıfını dogrudan kullanmasını sağlar. Aksi halde her kullanımda java.util.Scanner yazmak gerekir. Java API bilgi adresi java.sun.com/j2se/5.0/docs/api/index.html JDK 5.0 içindeki paketlerin açıklanması java.sun.com/j2se/5.0/docs/api/overview-summary.html

Fig. 6.6 | Java API packages (a subset). (Part 1 of 2)

Fig. 6.6 | Java API paketlerinin bir kısmı.

6.9 Rastgele sayı jeneratörü java.util paketindeki Random sınıfı Random sınıfından bir nesne oluşturarak rastgele sayılar üretebiliriz. Random rSayi= new Random(); Random sınıfındaki nextInt() metodu 2.147.483.648 ile 2.147.483.647 aralığında integer bir değer döndürür.

Outline

Outline RandomIntegers .java (2 of 2)

Outline

Outline Iterate 6000 times (2 of 2) Generate a random die roll RollDie.java (2 of 2) Generate a random die roll switch based on the die roll

Outline Display die roll frequencies RollDie.java (3 of 3)

6.9.1 Rastgele sayının ölçeklendirilmesi ve ötelenmesi İstenilen aralıkta rastgele sayı üretme Formül öteleme değeri +sayılar arasındaki fark * rSayi.nextInt(ölçek) öteleme değeri : istenilen sayı aralığının başlangıcı sayılar arasındaki fark : sayılar arasında olmasını istediğimiz fark ölçek :aralıkta kaç sayı olmasını istiyoruz

6.9.2 Rastegele sayı tekrarı testi Rastgele sayılar program her çalıştığında aynı sırada gelirse rastgelelik ortadan kalkar. Bunu engellemek için kullandığımız çekirdek değerin nasıl çalıştığını görelim. Random nesne oluştururken çekirdek değeri belirtmeliyiz: Random rSayi =new Random( cekirdek ); setSeed metodu kullanılır: rSayi.setSeed( cekirdek ); Cekirdek değerin long tipinde olması gerekir

Error-Prevention Tip 6.2 While a program is under development, create the Random object with a specific seed value to produce a repeatable sequence of random numbers each time the program executes. If a logic error occurs, fix the error and test the program again with the same seed value-this allows you to reconstruct the same sequence of random numbers that caused the error. Once the logic errors have been removed, create the Random object without using a seed value, causing the Random object to generate a new sequence of random numbers each time the program executes.

Şans oyunu crap İki zar atılıyor. Eğer ilk atışta toplamları 7 veya 11 ise oyuncu kazanır. Eğer ilk atışta 2,3 veya 12 ise oyuncu kaybeder. Eğer ilk atışta zarların toplamı 4,5,6,8,9 veya 10 ise , bu toplam oyuncunun puanı olur. Oyuncu kazanmak için bu puanı yakalayana kadar zarları atmaya devam eder. Puanı yakalayınca kazanır. Puanı yakalayamadan 7 atarsa kaybeder.

Outline Import class Random from the java.util package (1 of 4) Craps.java (1 of 4) Create a Random object Declare an enumeration Declare constants

Outline Call rollDice method (2 of 4) Craps.java (2 of 4) Player wins with a roll of 7 or 11 Player loses with a roll of 2, 3 or 12 Set and display the point

Outline Call rollDice method (3 of 4) Player wins by making the point Craps.java (3 of 4) Player wins by making the point Player loses by rolling 7 Display outcome

Outline CrapsTest.java (1 of 2)

6.10 Enumeration Enumeration Programcının tanımladığı, bir grup sabit içeren tip tanımlamaları Anahtar kelime: enum Örnekte tanımlanan tipin adı : Durum Enumeration sabitleri (KAZANDI, KAYBETTI ve DEVAM) Karşılaştırma yapılırken int değişkenlerle karşılaştırılamaz

İyi programlama 6.3 Sabit isimlerinde mutlaka büyük harf kullanın. Bu programa baktığımızda değişkenlerle sabitleri ayırmamızı sağlar.

İyi programlama 6.4 (0, 1, 2 gibi) tamsayı değerler yerine enumeration sabitleri (Durum.KAZANDI, Durum.KAYBETTI ve Durum.DEVAM) programda kolaylık sağlar.

6.11 Tanımlanan değişkenlerin geçerlilik alanları: Scope Tanımlanan değişkenlerin geçerlilik alanlarına Scope denir. Temel scope kuralları Parametrelerin geçerli olduğu alan metodun gövdesidir. Bir yerel değişkenin geçerlilik alanı tanımlandığı bloktur. for başlığında tanımlanan bir değişkenin geçerlilik alanı o döngünün gövdesidir. Döngüden çıkıldığında tanımlı değildir. Bir sınıf değişkeninin veya metodun geçerlilik alanı, o sınıfın gövdesidir.

6.11 Geçerlilik alanları Gölgeleme (Shadowing) Eğer bir sınıf değişkeni bir yerel değişkenle veya parametre ile aynı isimde ise bu sınıf değişkenini gölgelemekdir. Yerel değişkenin geçerlilik alanından çıkıldığında gölgeleme biter.

Genel programlama hatası 6.10 Bir metod içinde birden fazla aynı isimde yerel değişken olması derleme hatasına sebep olur.

Outline sınıfın x ini gölgeler yerel x’i yazar

Outline Sınıf değişkenini yerel x’in gölgelemesi

Outline ScopeTest.java

6.12 Metod Yükleme Metod yükleme (overloading) Aynı isimde birden fazla metod tanımlamak mümkündür. Ancak parametrelerin tipi, sayısı veya sırası farklı olmalıdır. Derleyici hangi metodun çağırılacağına -isimden değil de bu kez- çağıran satır ile parametre listesini karşılaştırarak karar verir. Bir metodun imzası, metodun adı, parametre sayısı, tipi ve sırasıdır. Metod yüklemede metodların döndürme tipi dikkate alınmaz Yüklenmiş metodlar farklı döndürme tiplerinde de olabilirler Farklı döndürme tipleri olmasına rağmen imzaların aynı olması derleme hatasına sebep olur

Outline

Outline MethodOverloadTest .java

Outline MethodOverload Error.java İmzalar aynı Derleme hatası

6.13 GUI ve Grafikler: Renkler ve Şekiller Color sınıfı java.awt içindedir RGB (red, green ve blue) yerine kullanılır Her bileşke 0 ile 255 arasında bir değer alır Önceden tanımlanmış 13 static Color nesnesi vardır: Color.Black, Color.BLUE, Color.CYAN, Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, Color.WHITE Color.YELLOW

6.13 GUI ve Grafikler: Renkler ve Şekiller fillRect ve fillOval metodları Graphics sınıfındadır drawRect ve drawOval çizerken fillRect ve fillOval şekilleri hem çizer hem renk ile boyar İlk iki parametre sol üst köşe koordinatlarını belirler Diğer iki parametre genişlik ve yüksekliği belirler setColor metodu Graphics sınıfındadır O anki çizim rengini belirler (şekilleri boyamak için kullanılır ( fillRect ve fillOval için)

Outline Import Color class Set fill colors Draw filled shapes DrawSmiley.java Set fill colors Draw filled shapes

Outline DrawSmileyTest .java

Fig. 6.18 | A bull’s-eye with two alternating, random colors.

Fig. 6.19 | Randomly generated shapes.

6.14 (Optional) Identifying Class Operations Identifying operations Examine key verbs and verb phrases in the requirements document Modeling operations in UML Each operation is given an operation name, a parameter list and a return type: operationName( parameter1, parameter2, …, parameterN ) : return type Each parameter has a parameter name and a parameter type parameterName : parameterType

6.14 (Optional) Identifying Class Operations (Cont.) Some operations may not have return types yet Remaining return types will be added as design and implementation proceed Identifying and modeling operation parameters Examine what data the operation requires to perform its assigned task Additional parameters may be added later on

Fig. 6.20 | Verbs and verb phrases for each class in the ATM system.

Fig. 6.21 | Classes in the ATM system with attributes and operations.

Fig. 6.22 | Class BankDatabase with operation parameters.

Fig. 6.23 | Class Account with operation parameters.

Fig. 6.24 | Class Screen with operation parameters.

Fig. 6.25 | Class CashDispenser with operation parameters.