Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

6 Metodlar.

Benzer bir sunumlar


... konulu sunumlar: "6 Metodlar."— Sunum transkripti:

1 6 Metodlar

2 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.

3 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

4 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)

5 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 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.

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

8 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.

9 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

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

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

12 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( )

13 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.

14 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

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

16 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.

17 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.

18 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

19 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

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

21 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

22 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

23 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.

24 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.

25 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 !

26 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

27 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ı)

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

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

30 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)

31 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

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

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

34 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 ile aralığında integer bir değer döndürür.

35 Outline

36 Outline RandomIntegers .java (2 of 2)

37 Outline

38 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

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

40 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

41 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

42 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.

43 Ş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.

44 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

45 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

46 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

47

48 Outline CrapsTest.java (1 of 2)

49 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

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

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

52 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.

53 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.

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

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

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

57 Outline ScopeTest.java

58 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

59 Outline

60 Outline MethodOverloadTest .java

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

62 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

63 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)

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

65 Outline DrawSmileyTest .java

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

67 Fig. 6.19 | Randomly generated shapes.

68 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

69 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

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

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

72 Fig. 6.22 | Class BankDatabase with operation parameters.

73 Fig. 6.23 | Class Account with operation parameters.

74 Fig. 6.24 | Class Screen with operation parameters.

75 Fig. 6.25 | Class CashDispenser with operation parameters.


"6 Metodlar." indir ppt

Benzer bir sunumlar


Google Reklamları