360 likes | 446 Views
Methods. Tanitim. Gercek dunya problemlerini cozmeye yonelik programlar oldukca karmasik ve buyuk hacimli koda sahiptirler.
E N D
Methods Java'da Programlama
Tanitim • Gercek dunya problemlerini cozmeye yonelik programlar oldukca karmasik ve buyuk hacimli koda sahiptirler. • Tecrubeler sunu gosterdi: Buyuk capli bir programi gelistirmenin ve bakimini iyi bir sekilde yapmanin en iyi yolu, onu kucuk parcalara bolmek suretiyle moduler bir sekilde gelistirmektir. Bu kucuk parcalara module ler denir. • Yukarida belirtilen teknige de divide and conquer teknigi denir. Java'da Programlama
Method lar ve Class lar • Java daki moduller method ve class lar seklindedir. • Java API (java class library) • Onceden tanimlanmis ve hazir olarak programcilara sunulan cesitli method ve class lari barindirir. • Matematik islemleri • String islemleri • Hata kontrol • Input/output (giris/cikis) islemleri Java'da Programlama
Math Class Methods • abs(x) // absolute value • ceil(x) // x i x den kucuk olmayan en // kucuk integer a yuvarlar • cos(x) // x in radians • exp(x) // ex • floor(x) // x i x den buyuk olmayan en // buyuk sayiya yuvarlar • max(x,y) • min(x,y) • pow(x,y) // yx Java'da Programlama
import java.awt.Graphics; import java.applet.Applet; public class SquareInt extends Applet { public void paint(Graphics g) { int xPosition =25; for(int x=1; x<=10; x++) { g.drawString(String.valueOf(square(x)),xPosition,25); xPosition+=20; } } // squarae method definition public int square(int y){ return y * y; } } Java'da Programlama
Method tanimlamasi return-value-type method-name(parameter-list) { decleartion ve statement lar } Eger donen degerin type i void ise, bu metodun hic bir seydondurmedigi anlamina gelir Java'da Programlama
public class Maximum extends Applet implements ActionListener{ Label label1, label2, label3, resultLabel; TextField number1, number2, number3, result; int num1, num2, num3, max; public void init(){ label1=new Label("Enter first integer:"); number1=new TextField("0",10); label2=new Label("Enter second integer:"); number2=new TextField("0",10); label3=new Label("Enter third integer:"); number3=new TextField("0",10); resultLabel=new Label("Maximum value is:"); result=new TextField("0",10); result.setEditable(false); number1.addActionListener(this); number2.addActionListener(this); number3.addActionListener(this); Java'da Programlama
add(label1); add(number1); add(label2); add(number2); add(label3); add(number3); add(resultLabel); add(result); } public int maximum(int x, int y, int z){ return Math.max(x, Math.max(y,z)); } Java'da Programlama
public void actionPerformed(ActionEvent e) { num1=Integer.parseInt(number1.getText()); num2=Integer.parseInt(number2.getText()); num3=Integer.parseInt(number3.getText()); max=maximum(num1,num2,num3); result.setText(Integer.toString(max)); } } Java'da Programlama
Java API Packages • java.applet : The Java Applet Package • java.awt: The Java Abstract Windowing Toolkit Package • java.awt.event: The Java Abstract Windowing Toolkit Event Package • java.beans: The Java Beans Package • java.io: The Java Input/Output Package • java.lang: The Java Language Package • java.net: The Java Networking Package • java.sql: The Java Database Connectivity Package Java'da Programlama
import java.awt.Graphics; import java.applet.Applet; public class RandomInt extends Applet{ public void paint(Graphics g) { int xPosition = 25; int yPosition =25; int value; for(int i=1; i<=20; i++){ value=1+(int)(Math.random()*6); g.drawString(Integer.toString(value), xPosition,yPosition); if(i%5!=0) xPosition+=40; else { xPosition = 25; yPosition+=15; } } } } Java'da Programlama
Automatic Variables • Bir degiskenin duration (lifetime) i soyle tanimlanir. Degisken in bellekte var oldugu zaman peryoduna denir. • Bir degiskenin scope u: Program icerinde bu variable e erisilebilen kod bolgesini tanimlar Java'da Programlama
Automatic Variables • Bir method a ait local degiskenleri tanimlayan belirtecler (parametreler, ve method icerisinde tanimlanan degiskenler) automatic duration a sahiptirler. Yani bu degiskenler, program kontrolu degiskenin tanimlandigi bloka gectiginde bellekte olusturulurlar, block aktif oldugu surece aktif kalirlar, ve ilgili bloktan cikildiginda yok edilirler. • Automatic degiskenlere, kullanilmadan once programci tarafindan baslangic degerleri atanmali Java'da Programlama
Class Scope & Block Scope • Bir class a ait methodlar ve instance variable lar class scope a sahiptir. Class scope class a ait kodun ‘{‘ ve ‘}’ arasinda kalan kod parcasidir. • Bir block icerisinde tanimlanan degiskenler block scope a sahip olurlar. Block scope degiskenin tanimlandigi yerden baslayan ve blogun sonunu gosteren ‘}’ arasinda kalan kod bolgesidir. Java'da Programlama
import java.awt.Graphics; import java.applet.Applet; public class Scoping extends Applet { int x=1; public void paint(Graphics g) { g.drawString("See command line for output",25,25); int x=5; System.out.println("local x in paint is "+x); a(); b(); a(); b(); System.out.println("\nlocal x in paint is " + x); } Java'da Programlama
void a(){ int x=25; System.out.println("\nlocal x in a is " +x+ " after entering a"); ++x; System.out.println("local x in a is " +x +" before exiting a"); } void b(){ System.out.println("\ninstance variable x is " +x+ " on entering b"); x*=10; System.out.println("instance variable x is " +x+ " on exiting a"); } } Java'da Programlama
Recursion (Kendi kendini cagirma) • Genellikle bir metod baska bir metodu cagirir. • Ancak bazi durumlarda bir metodun kendi kendini cagirmasi soz konusu olabilir • Ozellikle bazi problemlerin cozumunde cok buyuk kolaylik saglar • Bazi problemler dogasindan dolayi recursive olarakkolayca ifade edilebilirler. Java'da Programlama
Recursion • Kendi kendini direkt veya dolayli olarak baska bir method tarafindan cagiran metodlara recursive metod denir. Java'da Programlama
Recursive cozum • Recursive cozumde iki farkli durum var • Base case (durum): Problem yeterince basitse dogrudan cozum getirilir • Recursion case: Eger problem yeterince basit degilse (base case e uymuyorsa), problem daha kucuk boya recursion suretiyle indirgenir. Java'da Programlama
Ornek: Factorial • Factorial problemi asagidaki gibi tanimlanir. • n!=nx(n-1)x(n-2)x(n-3)x ……x1 • Bu fonksiyonu asagidaki gibi ifade edebiliriz. 1, eger n=1 veya n=0 // base case f(n) = nxf(n-1), diger durumlarda // recursion Java'da Programlama
Factorial problemi cozumu • 1. Cozum: iterative cozum. factorial =1; for(int counter = number; counter >=1; counter--) factorial *= counter; Java'da Programlama
Factorial problemi cozumu • 2. Cozum: recursive cozum if(number == 0 || number ==1) return 1; else return number * factorial(number –1); Java'da Programlama
2. Cozume devam 5! 5! 5!=5x24 =120 donduruldu 5x4! 5x4! 4!=4x6 =24 donduruldu 4x3! 4x3! 3!=3x2 =6 donduruldu 3x2! 3x2! 2!=2x1 =2 donduruldu 2x1! 2x1! 1 donduruldu 1 1 Her bir recursive cagrimdan donen degerler Recurive cagrimlar Java'da Programlama
Fibonacci fonksiyonu 0, eger n=0 fibonacci(n) = 1, eger n=1 fibonacci(n-1) + fibonacci(n-2) Java'da Programlama
package PackageFibonacciTest; import java.awt.*; import java.applet.Applet; import java.awt.event.*; /** * * */ public class ClassFibonacciTest extends Applet implements ActionListener{ Label numLabel, resultLabel; TextField num, result; Java'da Programlama
public void init(){ numLabel= new Label("Enter an integer and press return"); num = new TextField(10); num.addActionListener(this); resultLabel = new Label("Fibonacci value is"); result = new TextField(15); result.setEditable(false); add(numLabel); add(num); add(resultLabel); add(result); } Java'da Programlama
public void actionPerformed(ActionEvent e) { long number, fibonacciValue; number=Long.parseLong(num.getText()); showStatus("Calculating ..."); fibonacciValue=fibonacci(number); showStatus("Done."); result.setText(Long.toString(fibonacciValue)); } long fibonacci(long n){ if(n==0 || n==1) return n; // base case else return fibonacci(n-1)+fibonacci(n-2); // recursive case } } Java'da Programlama
Method Overloading • Java ayni class a ait olmak uzere ayni isimli fakat farkli fonksiyon signature (imzasi) sahip birden fazla method un tanimlanmasina olanak saglar. Buna method overloading denir. • Fonksiyon signature u ne belirler • Method un ismi • Parametrelerin sayisi • Parametrelerin tipleri • Parametrelerin sirasi Java'da Programlama
Ornek package MethodOverloadPackage; import java.awt.Graphics; import java.applet.Applet; public class MethodOverloadClass extends java.applet.Applet { /** Initialization method that will be called after the applet is loaded * into the browser. */ public void init() { // TODO start asynchronous download of heavy resources } // TODO overwrite start(), stop() and destroy() methods Java'da Programlama
public void paint(Graphics g) { g.drawString("The square of integer 7 is " +square(7), 25,25); g.drawString("The square of double 7.5 is " + square(7.5),25,40); } int square(int x) { return x*x; } double square(double y) { return y*y; } } Burada ayni isimli (square) fonksiyonu overload edilmis. Iki fonksiyonu birbirinden ayirt edici husus, her ne kadar ikisi de tek parametre aliyorlarsa da parametrelerinin tipleri farkli. Java'da Programlama