BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA Dr. Aslı Ergün 1
Scanner Sınıfı import java.util.Scanner; public class ScannerSinifi { public static void main(String args[]){ Scanner input = new Scanner(System.in); //Kullanıcıdan int değer alabilmek için Scanner sınıfını kullandık System.out.print("Lütfen ilk sayiyi giriniz: "); int sayi1 = input.nextInt(); //int değer alıyoruz System.out.print("Lütfen ikinci sayiyi giriniz: "); int sayi2 = input.nextInt(); //int değer alıyoruz System.out.println("Toplam: "+(sayi1+sayi2)); }
Scanner veri okuma fonksiyonları nextLine() -> String nextInt() -> Integer nextByte() -> Byte nextFloat -> Float nextDouble -> Double 26.05.2019
Veri Türleri Çevirmek İçin Integer x = Integer.valueOf(str); // veya int y = Integer.parseInt(str); 26.05.2019
Sınıflar Gerçek dünyada, ayrı ayrı tanımlanabilen herşey bir nesnedir. Gerçek dünyada, benzer karakteristik ve davranışlara sahip nesneler bir sınıf (class) ile temsil edilir. Her nesnenin özellikleri(attributes), ve davranışları (behaviors) vardır. 26.05.2019
Örnek Sınıf: Bisiklet 26.05.2019 class Bisiklet { int hiz = 0; int vites = 1; void vitesDegistir(int yendiDeger) { vites = yeniDeger; } void hizlan(int artir) { hiz = hiz + artir; void frenYap(int azalt) { hiz = hiz - azalt; void durumListele() { System.out.println(" hiz:"+hiz+" vites:"+vites); 26.05.2019
Nesnelerin Yaratılması class BisikletOrnek { public static void main(String[] args) { Bisiklet b1 = new Bisiklet(); Bisiklet b2 = new Bisiklet(); b1.hizlan(10); b1.vitesDegistir(2); b1.durumListele(); b2.hizlan(40); b2.vitesDegistir(3); b2.durumListele(); } 26.05.2019
Metodlar Nesne tabanlı programlamada metod şeklinde kullanımımız düz programlamada fonksiyon olarak karşımıza gelmektedir. f z a b c Gelen parametreler, metod içinde işleme Sokulup, elde edilen bir değer döndürülür. Hiç parametre almayan ve hiç parametre Üretmeyen metodlarda bulunmaktadır 26.05.2019
Metodların özellikleri Class içerisinde tanımlanmalıdır Modifier bulunmalıdır (private,public,protected) return type herhangi bir veri tipi yada void olabilir Metod ismi belirtilmelidir Metod parametreleri parantez içerisinde belirtilmelidir . Eğer parametre almayacaksa parantez açılıp kapatılır Metod içerisinde kod blokları { işaretiyle başlar } işaretiyle sonlandırılır Metod parametrelerini ayırmak için , işareti kullanılır Exception lar metodların yanında { işaretinden önce belirtilebilir 26.05.2019
Metod Türleri Önceden Tanımlanmış Metotlar : Java kütüphanelerinde bulunan hazır metotlardır. Örneğin : Math sınıfına ait olan pow(x,y) metodu, x ve y olarak iki değer alır ve bir değer döndürür. Kullanıcı Tanımlı Metotlar: Bizim yazdığımız ve oluşturduğumuz metotlardır. 26.05.2019
Metod Imzası(signature) erişim_tipi (public,private) static (olabilir, olmayabilir ) dönüş_tipi(void ,int vb) foksiyon_ismi(parametreler){ // Gövde kısmı } 26.05.2019
Erişim Tipleri: public: public damgası bir değişkeni, metodu ya da sınıfı niteleyebilir. Niteledikleri öğeler herkes tarafından kullanılabilir. Private: Bazı değişken, metot ya da sınıflara başka sınıftaki kodların erişmesini engellemek, yalnız aynı sınıftaki kodlar erişebilmesi için kullanılır. Protected: Bir sınıf içindeki değişken ve metotlara alt-sınıfların erişebilmesini, ama paket içindeki ya da program içindeki başka kodların erişmesini engellemek isteyebiliriz 26.05.2019
Static Bir sınıfa ait anlık değişken tanımlandığında, o sınıfa ait her bir nesne içinde söz konusu değişkenin bir kopyası oluşur. static damgalı değişkenlere ana bellekte ancak birer tane yer ayrılır, her nesne için ayrı yer ayrılmaz. Böylece, o sınıfa ait bir çok nesne yaratılsa bile, static değişkenin değerini ortak olarak kullanırlar. Değişken veya metodda kullanılabilirler. Örn: static int m= 5; static double b ; static void renkSec (Color color) { .... } 26.05.2019
Hiç parametre almadan metod çağırılması public static void Ornek(int a){ int i; for(i=0;i<a;i++){ System.out.println("Java"); }} public static void Main(String[] Args){ Ornek(10); } 26.05.2019
2 tamsayı alıp, 1 tamsayı döndüren metod public class Ornekler { public static void main(String[] args) { System.out.println(usAl(1,3)); } 26.05.2019
public static int usAl(int taban,int us) { int sonuc=1; for(int i=1;i<=us;i++) sonuc=sonuc*taban; return sonuc; } 26.05.2019
String alıp String Döndüren Metod package ornekler; // kelime tersten import java.util.Scanner; public class Ornekler { public static String tersCevir(String kelime){ String sonuc=""; for(int i=kelime.length()-1;i>=0;i--) { sonuc+=kelime.charAt(i); } return sonuc; public static void main(String[] args){ Scanner scn=new Scanner(System.in); System.out.println("kelime gir."); String kelime=scn.nextLine(); System.out.println(tersCevir(kelime)); 26.05.2019
Java Veri Tiplerinin Çevrilmesi Int to String String strI = Integer.toString(i); String strI = "" + i; Strig to Int İmport java.lang.Integer Integer x = Integer.valueOf(str); // veya int y = Integer.parseInt(str); 26.05.2019
Kurucu Metod Her sınıf için, ilk çalışan özel bir metot vardır. Bu metoda kurucu (kurucu) diyoruz. New komutu ile nesne olan her sınıf önce bu metodu çalıştırır. class Daire{ static int yarıçap; static double çevre; static double alan; final static double pi = 3.14; // Kurucu metodunun tanımı public Daire( int r ){ yarıçap = r ; }; public static void main (String args[]) { Daire d1 = new Daire(7); } 26.05.2019
Örnek class Küp02 { static int uzunluk; static int genişlik; static int yükseklik; public int hacimBul (int u, int g, int y) { uzunluk = u; genişlik = g; yükseklik = y; return uzunluk * genişlik * yükseklik; } public static void main(String[] args) { Küp02 obj = new Küp02(); int hacim = obj.hacimBul(2,2,2); System.out.println("Küp02 'nin Hacmi : " + h); 26.05.2019
Aşırı yükleme(overloading) Java, aynı isme sahip birden fazla metodlar tanımlamamıza izin vermektedir. Bu şekilde birden fazla aynı metodun yazılmasına overloading, aşırı yükleme adı verilir. Metodların parametre türü veya sayısı farklı olmalıdır. 26.05.2019
class Adder{ static int add(int a,int b){return a+b;} static int add(int a,int b,int c){return a+b+c;} } class TestOverloading{ public static void main(String[] args){ System.out.println(Adder.add(11,11)); System.out.println(Adder.add(11,11,11)); }} 26.05.2019
Kalıtım(Miras) Bir sınıfta tanımlanmış değişkenlerin ve metotların yeniden tanımlanmasına gerek olmaksızın yeni bir sınıfa taşınabilmesidir. Bir sınıftan bir alt-sınıf (subclass) türetilir. Türetilen alt-sınıf, üst-sınıfta tanımlı olan bütün değişkenlere ve metotlara sahip olur. class A { int i, j; } class B extends A { int k; 26.05.2019
Aşırı Yazım(overriding) Bir alt-sınıfta tanımlanan bir metodun, üst-sınıfında tanımlı bir başka metodun yerine kullanmaya zorlanmasına denir. class Arac{ void run(){System.out.println("Arac calısıyor");} } class bisiklet extends Arac{ void run(){System.out.println("Bisiklet calısıyor");} public static void main(String args[]){ bisiklet obj = new bisiklet(); obj.run(); 26.05.2019
Çok Biçimlilik(polymorphism) Bir tek metot adıyla, birden çok farklı metotları koşturma özeliğine, java’da polymorphism denir. 26.05.2019
class Sekil { double boyut1; double boyut2; Sekil(double a, double b) { boyut1 = a; boyut2 = b; } double alan() { System.out.println("Şeklin alanı henüz tanımlı değil! "); return 0; } } class Dikdortgen extends Sekil { Dikdortgen(double a, double b) { super(a, b); System.out.println("Dikdörtgenin alanı."); return boyut1 * boyut2; class Ucgen extends Sekil { Ucgen(double a, double b) { System.out.println("Üçgenin alanı."); return boyut1 * boyut2 / 2;
class AlanBul { public static void main(String args[]) { Sekil f = new Sekil(15, 15); Dikdortgen r = new Dikdortgen(7, 4); Ucgen t = new Ucgen(9, 6); Sekil ref; ref = r; System.out.println("Alan = " + ref.alan()); ref = t; ref = f; } } 26.05.2019
Super Metodu Bir alt-sınıf ne zaman üst-sınıfına erişmek isterse super anahtar sözcüğünü kullanabilir. class Kutu { double en; double boy; double yukseklik; Kutu(double e, double b, double y) { en = e; boy = b; yukseklik = y; } class AltKutu extends Kutu { double agr; AltKutu(double e, double b, double y, double a) { super(e, b, y); agr = a; } } 26.05.2019
Final Bu terim nitelediği öğenin sabit kılındığını ve değiştirilemeyeceğini belirtir. Eğer final belirtkesi class öğeleri için kullanılırsa, o class’ın alt-sınıfları yaratılamaz. class test { // bu değişkenin değeri değişemez final int sayac = 21; // bu metot üzerine yazılamaz final int deneMetot(int a, int b) { } 26.05.2019
class A { final void deneme() { System. out class A { final void deneme() { System.out.println("Bu bir final metot’tur."); } class B extends A { void deneme() { // HATA! Override edilemez. System.out.println("Geçersidir!"); }} ------ final class A { // ... // bu alt sınıf yaratılamaz. class B extends A { // HATA! 26.05.2019
abstract absract ifadesi soyut class veya soyut metot yaratır. Soyut metotların adı, değişkenleri ve değer-tipi (return type) belirtilir, ama metot gövdesi yazılamaz. Abstract class’tan nesne yaratılamaz. Abstract sınıf kullanılarak alt sınılar yaratılır. abstract class Araba{ private int agirlik; private String renk; private String model; abstract void setrenk (Color color); public void setModel(String model) { this.model = model; } 26.05.2019
// soyut sınıf abstract class A { // soyut sınıf içinde en az bir soyut bir metot yer almalıdır abstract void soyMet(); // soyut sınıf içinde somut metot olabilir void somMet() { System.out.println("Ben somut bir metodum."); } } class B extends A { void soyMet() { System.out.println("Sen soyut bir metotsun."); } class UygulamaPrg { public static void main(String args[]) { B b = new B(); b.soyMet(); b.somMet(); } } 26.05.2019
Paketler(Packages) Java programları paketlerden (packages) oluşur. Paketlerin içinde sınıflar ve arayüzler (classes and interfaces) bulunur. Ayrıca, paketler başka paketlerin dışalımını (import) yapabilir. Bir paket içinde tanımlanan sınıflar ve arayüzler her istenildiğinde tekrar takrar kullanılabilirler 26.05.2019
Package kullanım örneği package paket_adı ; import paket_listesi; { //paket gövdesi } 26.05.2019