EDUTIME Java Day 5 Serdar TÜRKEL
Konular Arayüz (Interface) Tanımlama Arayüz uygulama Paket tanımlama Paketlerin yaratılması ve kullanımı Erişim kontrolünde paketlerin rolü Java.lan ve java.util paketlerinin özellikleri
Giriş Bir java programının iki temel parçası vardır PaketlerPaketler ArayüzlerArayüzler Java kaynak kod dosyasi dört parçadan oluşabilir. ‘package’ deyimi‘package’ deyimi ‘import’ deyimi‘import’ deyimi ‘public’ sınıf bildirimi‘public’ sınıf bildirimi Pakete özel herhangi sayıda sınıfPakete özel herhangi sayıda sınıf
Arayüzler Bir sınıfın birden fazla üst sınıfı olmasını sağlar Java programları sadece bir sınıftan kalıtımla gelebilir, fakat birden fazla arayüz gerçekleştirebilir(implements) Arayüzler gerçekleştirilmek zorunda değillerdir.
Arayüzler Arayüz şöyle tanımlanır public interface benimArayuzum { public void ekle(int x, int y); public void hacim(int x, int y, int z); public void hacim(int x, int y, int z);} public interface benimSabitlerim { public static final double price = ; public static final double price = ; public static final int counter = 5; public static final int counter = 5;}
Arayüz oluşturmak için adımlar Arayüz tanımlanır Arayüz derlenir Arayüz gerçekleştirilir Arayüz tanımlanırken Bütün metotlar ve değişkenler public olmalıdır.Bütün metotlar ve değişkenler public olmalıdır. Metotlar arayüzü gerçekleştiren sınıf içerisinde tanımlanmalıdırlarMetotlar arayüzü gerçekleştiren sınıf içerisinde tanımlanmalıdırlar
Arayüzün gerçekleştirilmesi Arayüzler bir sınıfı kalıtamazlar fakat diğer arayüzleri kalıtabilirler Arayüzün içindeki bütün metotlar public olmalıdır.
Arayüzün gerçekleştirilmesi import java.io.*; class Demo implements benimArayuzum { public void ekle(int x, int y) { System.out.println ((x+y)); } public void hacim(int x, int y, int z){ System.out.println ((x*y*yz)); } public static void main(String args[]){ Demo d = new Demo(); d.ekle(10,20);d.hacim(10,10,10);}}
Paketler Paket, sınıflarımızı ve arayüzlerimizi organize ettiğimiz bir klasördür. Her paket sınıflardan ve/veya arayüzlerden oluşur Paketlerin avantajları Sınıfları daha küçük birimler şeklinde organize etmemize yararlarSınıfları daha küçük birimler şeklinde organize etmemize yararlar Sınıflar toplu olduğundan daha kolay erişmemizi sağlarlarSınıflar toplu olduğundan daha kolay erişmemizi sağlarlar İsimlendirme çakışmalarını bertaraf ederlerİsimlendirme çakışmalarını bertaraf ederler Paketler sınıflarınızı ve verilerinizi korurlarPaketler sınıflarınızı ve verilerinizi korurlar Paket isimleri, sınıfları birbirinden ayırmak için kullanılabilirlerPaket isimleri, sınıfları birbirinden ayırmak için kullanılabilirler
Paketler Paketleri oluştururken dikkat edilecekler : Kodumuz ‘package’ deyimi ile başlamalıdır.Kodumuz ‘package’ deyimi ile başlamalıdır. Paket adlarımız sınıf adlarından ayırt edebilmek için küçük harfle başlamalıdır.Paket adlarımız sınıf adlarından ayırt edebilmek için küçük harfle başlamalıdır. Diğer deyimler ‘package’ deyiminden sonra gelirlerDiğer deyimler ‘package’ deyiminden sonra gelirler Paketteki sınıflarda derlenmelidirPaketteki sınıflarda derlenmelidir Java programlarımızın bu paketleri kullanabilmelerini sağlamak için onları ‘import’ deyimi ile ihraç(import) etmemiz gerekmektedirJava programlarımızın bu paketleri kullanabilmelerini sağlamak için onları ‘import’ deyimi ile ihraç(import) etmemiz gerekmektedir
Paketler belirli bir sınıfı ihraç edebiliriz import benimPaketim.hesapla;import benimPaketim.hesapla; Tüm paketin içeriğini import edebiliriz import benimPaketim.*;import benimPaketim.*;
Paket oluşturma Paketi bildirin package benimPaketim;package benimPaketim; ‘import’ deyimi ile gerekli paketleri katın import java.util.*;import java.util.*; Paketin içinde bulunacak sınıfları tanımlayın. .java uzantısı ile dosyamızı kaydedin ve pakette tanımlanmış sınıfları derleyin Derlerken –d seçeneği kullanılabilir Javac –d c:\ benimArayuzum.javaJavac –d c:\ benimArayuzum.java
Paketleri kullanmak Diğer java programlarının paketleri kullanabilmesini sağlamak için, kaynak kodunuza ‘import’ edilmeli Eğer bir paket import edilmezse, o paketteki bir sınıftaki metoda erişmek için sınıf isminin yanında paket adınıda kullanmalıyız benimPaketim.Hesapla calc = new benimPaketim.Hesapla();benimPaketim.Hesapla calc = new benimPaketim.Hesapla();
Classpath Ayarları Derleyici ve yorumlayıcı, sınıfları, bulunulan dizinde ve JDK sınıf dosyalarından oluşan sıkıştırılmış dosyalarında arar İlk başta yaptığımız classpath ayarı ile biz bu JDK sınıflarının bulunduğu sıkıştırılmış dosyasının yerini bildirmiş oluruz. Diğer sınıfları ise gene derleyici ve yorumlayıcıya bir şekilde belirtmemiz gerekir bunuda –classpath parametresi ile yaparız Javac –classpath c:\ Hesapla.javaJavac –classpath c:\ Hesapla.java Java –classpath c:\ HesaplaJava –classpath c:\ Hesapla
Paket Örneği package benimPaketim; public class Hesapla { public double volume(double yukseklik, double genislik, double derinlik) { return (yukseklik*genislik*derinlik); } public int ekle(int x, int y) { return (x+y); } public int bol(int x, int y) {return(x/y);}}
Paket örneği import java.io.*; import benimPaketim.hesapla; class PaketDemo{ public static void main(String args[]){ hesapla calc = new hesapla(); int sum = calc.ekle(10,20); double vol = calc.hacim(10.3,13.2,32.32); int div = calc.bol(20,4); System.out.println ("toplam:\t" + sum); System.out.println ("hacim:\t" + vol); System.out.println ("bolum:\t" + div); }}
Paket erişim kontrolü
java.lang paketi Her java sınıfı bunu varsayılan olarak import eder İlkel veri tipleri için sargı(wrapper) sınıfları
java.lang paketi Boolean sargiBool = new Boolean(“false”); Integer num1 = new Integer(“31”); Integer num2 = new Integer(3); int sum = num1.intValue() + num2.Value();
Dizgi (String) sınıfı Oluşturucu metodları; String str1 = “Selam”; String str1 = “Selam”; String str2 = new String(); String str2 = new String(); String str3 = new String(“Hello World”); String str3 = new String(“Hello World”); char ch[ ] = {“A”,”B”,”C”,”D”,”E”}; char ch[ ] = {“A”,”B”,”C”,”D”,”E”}; String str4 = new String(ch); String str4 = new String(ch); String str5 = new String(ch,0,2); String str5 = new String(ch,0,2);
Dizgi (String) sınıfı “+” işleci, var olan iki dizgiyi birbirine eklemekte kullanılır. “Hello” + “world” = “Hello World”“Hello” + “world” = “Hello World” String strFirst, strSecond, strFinal; strFirst = “Ahmet”; strSecond = “Demirci”; strFinal = strFirst + strSecond; strFinal = strFirst.concat(strSecond);
Dizgi Havuzu ‘Dizgi Havuzu’ bir programda oluşturulan tüm dizgileri tutar. String day = “Monday”; String weekday = “Monday”;
Dizgi sınıfının metodları charAt( ) startsWith() endsWith( ) copyValueOf( ) toCharArray( ) indexOf( ) toUpperCase( ) toLowerCase( ) trim( ) equals( )
Dizgi sınıfının metodları charAt() String name = new String(“Java Language”)String name = new String(“Java Language”) Char ch = name.charAt(5);Char ch = name.charAt(5); startsWith() String name = new String(“Java Language”)String name = new String(“Java Language”) Boolean flag = strname.startsWith(“Java”);Boolean flag = strname.startsWith(“Java”); endsWith() String name = new String(“Java Language”)String name = new String(“Java Language”) Boolean flag = strname.endWith(“Java”);Boolean flag = strname.endWith(“Java”); copyValueof() Char name[] = {‘L’,’a’,’n’,’g’,’u’,’a’,’g’,’e’}Char name[] = {‘L’,’a’,’n’,’g’,’u’,’a’,’g’,’e’} String subname = String.copyValueOf(name,5,2);String subname = String.copyValueOf(name,5,2);
Dizgi sınıfının metodları toCharArray() String text = new String(“Hello World”);String text = new String(“Hello World”); Char textArray[] = text.toCharArray();Char textArray[] = text.toCharArray(); indexOf() String text = new String(“Hello World”);String text = new String(“Hello World”); int index1 = text.indexOf(“n”);int index1 = text.indexOf(“n”); toUpperCase() Text.toUpperCase();Text.toUpperCase(); toLowerCase() Text.toLowerCase();Text.toLowerCase(); Trim() String bos = new String(“ Bosluklar ”);String bos = new String(“ Bosluklar ”); System.out.println(bos);System.out.println(bos); System.out.println(bos.trim());System.out.println(bos.trim()); Equals() Boolean flag = name1.equals(name2);Boolean flag = name1.equals(name2);
StringBuffer sınıfı String nesnesi ile çalışan çeşitli metodlar sunar Bu sınıfın nesneleri esnektir. StringBuffer sınıfının metodları append( )append( ) insert( )insert( ) charAt( )charAt( ) setCharAt( )setCharAt( ) setLength( )setLength( ) getChars( )getChars( ) reverse( )reverse( )
StringBuffer sınıfının kapasitesi class StringBufferCons{ public static void main(String args[]){ StringBuffer s1 = new StringBuffer(); StringBuffer s2 = new StringBuffer(20); StringBuffer s3 = new StringBuffer("StringBuffer"); System.out.println ("s3 = " +s3); System.out.println (s2.length()); System.out.println (s3.length()); System.out.println (s1.capacity()); System.out.println (s2.capacity()); System.out.println (s3.capacity()); }}
StringBuffer sınıfının kapasitesi Eğer kapasite girilen parametreden küçükse yeni kapasite Yeni kapasite = Eski Kapasite * class text{ public static void main(String args[]){ StringBuffer s1 = new StringBuffer(5); System.out.println ("Tamponun kapasitesi = " + s1.capacity()); s1.ensureCapacity(8); s1.ensureCapacity(30); }}
StringBuffer sınıfının metodları Append() StringBuffer s1 = new StringBuffer(“Good”);StringBuffer s1 = new StringBuffer(“Good”); s1.append(“evening”);s1.append(“evening”); İnsert() StringBuffer s1 = new StringBuffer(“Good”);StringBuffer s1 = new StringBuffer(“Good”); s1.insert(1,’b’);s1.insert(1,’b’); CharAt() StringBuffer s1 = new StringBuffer(“Good”);StringBuffer s1 = new StringBuffer(“Good”); Char letter = s1.charAt(2);Char letter = s1.charAt(2); setCharAt() StringBuffer s1 = new StringBuffer(“Good”);StringBuffer s1 = new StringBuffer(“Good”); S1.setCharAt(2,’v’);S1.setCharAt(2,’v’); setLength() StringBuffer str= new StringBuffer(20);StringBuffer str= new StringBuffer(20); Str.setLength(str.length()+10);Str.setLength(str.length()+10); getChar(); StringBuffer str = new StringBUffer(“Leopard”);StringBuffer str = new StringBUffer(“Leopard”); Char ch[] = new char[10];Char ch[] = new char[10]; Str.getChars(3,6,ch,0);Str.getChars(3,6,ch,0); Reverse() StringBuffer str = new StringBUffer(“Leopard”);StringBuffer str = new StringBUffer(“Leopard”); StringBuffer strrev = str.reverse();StringBuffer strrev = str.reverse();
java.lang.Math sınıfı Bu sınıfla matematiksel işlemler gerçekleştirilir Bu sınıf static bir sınıftır, bu nedenle bir nesne oluşturmadan metotlarına ulaşabiliriz. Söz dizimiSöz dizimi Math. Math.
java.lang.Math sınıfının Metodları abs() ceil() floor() max() min() round() random() sqrt() sin() cos() tan()
Abs() Math.abs(-1);Math.abs(-1); Ceil() Math.ceil(8.02);//9Math.ceil(8.02);//9 Math.ceil(-1.3);//-1Math.ceil(-1.3);//-1 Math.ceil(100);//100Math.ceil(100);//100 Floor() Math.floor(8.02);//8Math.floor(8.02);//8 Math.floor(-1.3);//-2.0Math.floor(-1.3);//-2.0 Math.floor(100);//1000Math.floor(100);//1000 Max Math.max(10,20); // 20Math.max(10,20); // 20 Min Math.min (10,20)//10Math.min (10,20)//10 Round() Math.round(34.5)//35Math.round(34.5)//35 Sqrt() Math.sqrt(144);//12Math.sqrt(144);//12 Sin() Math.Sin(Math.PI/2)Math.Sin(Math.PI/2) Cos() Tan()
Runtime Sınıfı Bellek yönetimi ve ek işlemlerin çalıştırılması için kullanılır. Her java programının bu sınıftan bir örneklendirmesi vardır. Uygulamanın ortam ile iletişimini sağlamak için kullanılır.
Runtime sınıfının metotları MetotAmaç Exit(int) Programı durdurur ve kodun değerini işletim sistemine gönderir freeMemory() Programın kullanabileceği boş bellek miktarını gönderir getRuntime() Bulunulan çalışma zamanı sistemi örneklendirmesini gönderir gc Çöp Toplayıcıyı Çağırır totalMemory Programın kullanabileceği toplam belleği verir Exec(String) İsmi verilen programı çalıştırır
Runtime sınıfının metotları class benimArayuzum{ public static void main(String args[]){ Runtime r = Runtime.getRuntime(); Process p = null; System.out.println ("Free memory: " + r.freeMemory()); System.out.println ("Total memory: " + r.totalMemory()); try{ p = r.exec("calc.exe"); } catch(Exception e) { System.out.println ("Error executing calculator"); System.err.print(e);}}}
System sınıfı System sınıfı, standart giriş/çıkış (i/o) ve hata akımları gibi olanaklar sunar. Java çalışma zamanı sistem ile ilgili özelliklere ve versiyon, yol(path), üretici gibi çeşitli ortam özelliklerine ulaşmak için yollar sunar.
System sınıfının metotları MetotAmaç Exit(int) Programı durdurur ve kodun değerini işletim sistemine gönderir Gc() Çöp Toplayıcıyı Çağırır getProperties() Java çalışma zamanı sisteminin bazı özelliklerini döndürür setProperties() Bulunulan sistemin özelliklerini ayarlar currentTimeMillis() Ocak 1970’in gece yarısından itibaren milisaniye cinsinden ölçülen o anki zamanı döndürür arrayCopy(Object src, int srcPos, Object dest, int destPos, int length) Object Diziyi kopyala
System sınıfına örnek class SystemDemo { public static void main(String args[]) { System.out.println ("Java Class Path " +System.getProperty("java.class.path")); System.out.println ("\nJava Home " +System.getProperty("java.home")); System.out.println ("\nJava Class Version " +System.getProperty("java.class.version")); System.out.println ("\nJava Specification Vendor " +System.getProperty("java.specification.vendor")); System.out.println ("\nJava Specification Version " +System.getProperty("java.spceification.version")); System.out.println ("\nJava Vendor " +System.getProperty("java.vendor")); System.out.println ("\nJava Vendor Url " +System.getProperty("java.vendor.url")); System.out.println ("\nJava Version " +System.getProperty("java.version")); System.out.println ("\nJava VM Name " +System.getProperty("java.vm.name")); }}
Class sınıfı Çalışmakta olan bir Java uygulamasındaki bir nesnenin çalışma zamanı durumunu tutar. Bu çalışma esnasında bir nesne hakkında bilgi edinebilmemizi sağlar Bir sınıfın nesnesini veya örneklendirmesini üç yolla alabiliriz Nesnenin ‘getClass()’ metodunu kullanmakNesnenin ‘getClass()’ metodunu kullanmak Sınıfın ‘forName()’ metodunu kullanarak sınıfın örneklendirmesini almakSınıfın ‘forName()’ metodunu kullanarak sınıfın örneklendirmesini almak Genel bir ‘ClassLoader’ (Sınıf Yükleyici) nesnesini kullanarak yeni bir sınıf yüklemekGenel bir ‘ClassLoader’ (Sınıf Yükleyici) nesnesini kullanarak yeni bir sınıf yüklemek
Class sınıfına örnek interface A { final int id =1; final String name = "Diana"; } class B implements A { int deptno; } class ClassDemo { public static void main(String args[]) { A a = new B(); B b = new B(); Class x; x = a.getClass(); System.out.println ("a is object of type" + x.getName()); x = b.getClass(); System.out.println ("b is object of type" + x.getName()); x = x.getSuperclass(); System.out.println (x.getName() + " is the superclass of b."); }}
Object sınıfı ‘object’ sınıfı, tüm sınıfların üst sınıfıdır.
Object sınıfının bazı metotları MetodAmaç Equals(object) bulunulan nesne örneklemesini verilen nesne ile karşılaştırır ve eşit olup olmadıklarını kontorl eder. Finalize() Finalize metodunun varsayılan formu. Çoğunlukla alt sınıflar tarafından üzerine yazılır Notify() Bu nesneden dolayı bekleme durumunda olan tüm işletim dizisini uyandırır notifyAll() Nesnenin ‘String’ gösterimini döndürür toString() Nesnenin ‘string’ gösterimini döndürür Wait Şu anki işletim dizisinin bekleme durumuna geçmesini sağlar
Java.util Paketi Her türde uygulama tarafından sıklıkla ihtiyaç duyulan en kullanışlı Java sınıflardan bazılarını sunar Aşağıdaki soyut olmayan sınıfları içerir HastableHastable RandomRandom VectorVector StringTokenizerStringTokenizer
Hashtable sınıfı ‘Hashtable’ sınıfı, ‘java.util’ paketinde tanımlı soyut ‘Dictionary’ sınıf genişletir. ‘Hashtable’ yeni elemanlar eklendikçe büyüklük cinsinden genişler. ‘Hashtable’ nesnenin sınırı, kapasitesi ve yükleme miktarının çarpımına eşittir.
Hashtable sınıfının oluştururcu metodları OluşturucuAmaç Hashtable(int) Belirtilen başlangıç kapasitesine sahip yeni bir ‘Hashtable’ oluşturur Hashtable(int,float) Belirtilen başlangıç kapasitesine ve yükleme miktarınasahip yeni bir ‘Hashtable’ oluşturur Hashtable() Başlangıç kapasitesi ve yükeleme miktarı için varsayılan değerleri kullanan bir ‘hashtable’ oluşturur
Hashtable sınıfının bazı metodları MetodAmaç Clear() Tüm elemanları siler Clone() Nesnenin kopyasını oluşturur Contains(Object) Belirtilen nesne hashtable da ise true verir ContainsKey(Object) Belirtilen anahtar hashtable da ise true verir Elements() Hashtable nesnesindeki elemanların bir listesini döndürür Get(Objectkey) Belirtilen anahtarla ilişkilendirilmiş nesneyi döndürür isEmpty Hashtable boş ise true döndürür