Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Methods 2/22/2019 Java'da Programlama
2
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. 2/22/2019 Java'da Programlama
3
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 2/22/2019 Java'da Programlama
4
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 2/22/2019 Java'da Programlama
5
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; 2/22/2019 Java'da Programlama
6
2/22/2019 Java'da Programlama
7
Method tanimlamasi return-value-type method-name(parameter-list) {
decleartion ve statement lar } Eger donen degerin type i void ise, bu metodun hic bir sey dondurmedigi anlamina gelir 2/22/2019 Java'da Programlama
8
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); 2/22/2019 Java'da Programlama
9
public int maximum(int x, int y, int z){
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)); 2/22/2019 Java'da Programlama
10
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)); } 2/22/2019 Java'da Programlama
11
2/22/2019 Java'da Programlama
12
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 2/22/2019 Java'da Programlama
13
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; } 2/22/2019 Java'da Programlama
14
2/22/2019 Java'da Programlama
15
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 2/22/2019 Java'da Programlama
16
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 2/22/2019 Java'da Programlama
17
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. 2/22/2019 Java'da Programlama
18
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(); System.out.println("\nlocal x in paint is " + x); } 2/22/2019 Java'da Programlama
19
System.out.println("\nlocal x in a is " +x+ " after entering a"); ++x;
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"); 2/22/2019 Java'da Programlama
20
2/22/2019 Java'da Programlama
21
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. 2/22/2019 Java'da Programlama
22
Recursion Kendi kendini direkt veya dolayli olarak baska bir method tarafindan cagiran metodlara recursive metod denir. 2/22/2019 Java'da Programlama
23
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. 2/22/2019 Java'da Programlama
24
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 2/22/2019 Java'da Programlama
25
Factorial problemi cozumu
1. Cozum: iterative cozum. factorial =1; for(int counter = number; counter >=1; counter--) factorial *= counter; 2/22/2019 Java'da Programlama
26
Factorial problemi cozumu
2. Cozum: recursive cozum if(number == 0 || number ==1) return 1; else return number * factorial(number –1); 2/22/2019 Java'da Programlama
27
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 Recurive cagrimlar Her bir recursive cagrimdan donen degerler 2/22/2019 Java'da Programlama
28
Fibonacci fonksiyonu 0, eger n=0 fibonacci(n) = 1, eger n=1
fibonacci(n-1) + fibonacci(n-2) 2/22/2019 Java'da Programlama
29
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; 2/22/2019 Java'da Programlama
30
numLabel= new Label("Enter an integer and press return");
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); } 2/22/2019 Java'da Programlama
31
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 2/22/2019 Java'da Programlama
32
2/22/2019 Java'da Programlama
33
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 2/22/2019 Java'da Programlama
34
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 2/22/2019 Java'da Programlama
35
Burada ayni isimli (square) fonksiyonu overload edilmis.
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. 2/22/2019 Java'da Programlama
36
2/22/2019 Java'da Programlama
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.