Java & Nesne Yönelimli Programlama Yazdır E-Posta

İçindekiler
1.Soyut(Abstract) Sınıflar 1
2.Arabirim(Interface) Sınıfları 2
3. Paketler 2
4. Grafikler 3
4.a Renk 4
4.b Çizim 4
4.c Font ve Yazı 4
4.d Bütün Grafik Konularını İçeren Bir Applet Örneği 5

1.Soyut(Abstract) Sınıflar
Soyut sınıflar, tüm alt sınıfları tarafından paylaşılacak metodların tanımlarını içeren sınıflardır. Soyut sınıflar içeriği belirlenmemiş sadece etiketi(C’deki prototip belirtimi gibi) belli bir ya da daha fazla soyut metod içerirler. Bu metodların içeriklerine alt sınıflarda bindirme (override) yapılarak içerik kazandırılır. Bir soyut sınıftan türeyen tüm alt sınıflarda bu soyut metodlara bindirme yapılmalıdır. Bir soyut sınıf tamamlanmamış olduğu için nesne haline getirilemez. Mutlaka “extends” anahtar sözcüğü ile yeni sınıflara miras bırakarak kullanılmalıdır. Kısaca bir sınıf isminden önce “abstract” kelimesi vars o sınıf soyuttur ve ve en az bir adet “abstract” tanımlı metod içermelidir.
Aşağıdaki örneklerde sekil soyut sınıfından önce noktaX türetilmiş ve soyut metod olan isimoku()’nun içeriği noktaX’de tanımlanmıştır. noktaX’den daireX’e, daireX’ten de silindirX’e miras kalan isimoku()’nun içeriği hepsinde farklıdır. Demo programında bu üç farklı sınıftan türeyen üç farklı nesne, soyut sınıf tipinde oluşturumuş diziye atanabilmiştir. Kısaca üç farklı nesne tek çatı altında toplanmıştır. Hepsi de isimoku(),alan() ve hacim() metodlarına cevap verebilmiştir. Diğer bir örnekle bir bisiklet, bir otomobil ve bir tır aynı garajda toplanmış ve üçüne de “kornaya bas” emri verildiğinde kendi tarzlarında aynı anda kornayı çalmışlardır.
sekil.java noktaX.java
public abstract class sekil {
public double alan() {return 0.0;}
public double hacim() {return 0.0;}

public abstract String isimoku();

}
public class noktaX extends sekil {

protected double x,y;
public noktaX(double a,double b) {
x = a; y = b;
}
public String isimoku() {return "Nokta";}
}
daireX.java silindirX.java
public class daireX extends noktaX{
protected double yaricap;
public daireX(double a, double b, double r) {
super(a,b);
yaricap=r;
}
public String isimoku(){ return "Daire";}
public double alan() {return Math.PI*Math.pow(yaricap,2);}
} public class silindirX extends daireX{
protected double yukseklik;
public silindirX(double a, double b, double r, double h) {
super(a,b,r);
yukseklik=h;
}
public String isimoku(){ return "Silindir";}
public double alan() {return 2*super.alan() + yukseklik * 2*Math.PI*yaricap;}
public double hacim() {return super.alan() * yukseklik;}}
soyutdemo.java Çıktı
class soyutdemo {
public static void main(String args[]) {
sekil sekiller[]=new sekil[3];
noktaX n;
daireX d;
silindirX s;
n=new noktaX(2.0, 1.0);
d=new daireX(3.0, 4.0, 10.0);
s=new silindirX(2.0, 4.0, 3.0, 4.0);
sekiller[0]=n;
sekiller[1]=d;
sekiller[2]=s;
int i;
for(i=0;i<sekiller.length;i++) {
System.out.println("Nesne....: " + sekiller[i].isimoku()+ " "+sekiller[i].alan() + " " +sekiller[i].hacim());
} } }

C:\java\prog\java soyutdemo
Nesne….: Nokta 0.0 0.0
Nesne….: Daire 314.15 0.0
Nesne….: Silindir 131.95 113.09

2.Arabirim(Interface) Sınıfları
Soyut sınıflarda ve miras konusunda görüldüğü gibi tek bir sınıftan kalıtım mümkün oluyordu. Fazla sayıda sınıftan farklı özellikleri aynı anda almak için interface(arabirim) sınıfları mevcuttur. Arabirim sınıflarında hiçbir metodun içeriği yazılmaz, içerikler altsınıflarda oluşturulur. Altsınıflar arabirim sınıflarını “implements” sözcüğü ile çağırırlar. Kısaca arabirim sınıfları “interface” kelimesi ile tanımlanır(class ibaresi geçmez), ve bu arabirimi kullanacak altsınıflarda sınıf adından sonra “implements” kelimesi ve ardından arabirim sınıfının adı gelir. Örneğin sekil sınıfı arabirim sınıfı, noktaY sınıfı da onu kullanan altsınıf olsun. Gösterimleri aşağıdaki gibi olacaktır.
interface nehaber{
String isimoku();
} class dene implements nehaber {
String isimoku() { // Burada içerik var
}}
Miras ve arabirimler birarada kullanılabilirler, Bunun en güzel örneği grafik kullanıcı arayüz programlarıdır. Aşağıdaki applet sınıfı tanımını inceleyiniz.
public class goster extends Applet implements ActionListener, MouseListener, ItemListener {
Görüldüğü gibi sadece tek sınıftan(Applet) miras alabiliyor ama birden fazla arabirim sınıfını kullanabiliyor.

3. Paketler
Daha önceden bazı programlarda import deyimi ile java.awt.*; java.applet.Applet; gibi bildirimleri programların başında yazmıştık. Bunları C’deki include veya Pascal’daki unit ile yüklenen kütüphanelere benzer olduğunu söylemiştik. Hatta aynı dizinde iki ayrı dosyada bulunan iki sınıftan biri diğerini kullanıyorsa import deyimi kullanmaya gerek olmadığı belirtilmişti. Çünkü java bir dizin içindeki tüm dosyaları tarayabilme ve gerekirse kullanabilme yeteneğine sahiptir.
Java’da benzer işleri yapacak sınıflar karışıklığı önlemek ve sonradan kolayca kullanabilmek maksadıyla paketlenebilirler. Diyelim ki, bir fourier transformu yapan metodunuz var ve yüzlerce sınıfınız veya dosyanız içinde herhangi birisinde. Bunun nerede olduğunu aramak dakikaları alabilir. Eğer bu yüzlerce sınıf paketlernirse kullanıcının artık kullanacağı metodun hangi sınıfta olduğunu bilmesine gerek kalmayacaktır. Sadece paketin adını “import” kelimesi ile çağırması yeterli olacaktır. Bu aşamada, bir paketin nasıl oluşturulduğunu ve kullanıldığını göreceğiz.
Bir paketin import edilerek sınıflarının kullanılabilmesi için sınıfların “public” tanımlanması gereklidir. main() metodu içeren bir sınıf ise public olmasa bile başka bir yöntemle çalıştırılabilir. Paketlerin ve çalıştırılacak sınıfların birbirini görmesi ve tanıması için aynı sınıf yoluna bağlı olmaları gerekir. Javada sınıfyolu(classpath) adı verilen yol bu işi görür. Oluşturduğunuz paketi ve sınıfların olduğu dizini bu yola eklemek için komut satırında
C:\ CLASSPATH=%CLASSPATH%; c:\jdk1.3\prog\paketim\
gibi bir satır yazılması gerekebilir.
Javada paket olacak sınıflar bir diine toplanır ve tüm dosyaların en başına “package” kelimesinden sonra o dizinin yani paketin adı yazılır. “package” kelimesi bir dosyada ilk ifade olmak zorudundadır. Örneğimizde oluşturacağımız paketin adı : “paketim”. Bu nedenle prog çalışma dizinimiz altında paketim adında bir dizin oluşturmalıyız. Paketim dizininin altında paket sınıfları olacak paket0 ve paket00’ı içeren paket0.java programını yazarız. Dosya ismi olarak paket0.java verildi çünkü paket0 sınıfı public bir sınıf olup, eğer bir dosyada public bir sınıf varsa dosya o isimde kaydedilir. Eğer yoksa main() metodu içeren sınıfa bakılmalıdır ve varsa onun isminde kaydedilmelidir.

paket0.java callpaket.java
package paketim;

public class paket0 {
public paket0() {
System.out.println("merhaba");
}
}

class paket00 {
public static void main(String args[]) {
System.out.println("pakettesin...");
}
} import paketim.*;

class callpaket {
public static void main(String args[]) {
paket0 p0=new paket0();
}
}
C:\java\prog\paketim\javac paket0.java
C:\java\prog\java paketim.paket00
pakettesin C:\java\progjava\javac callpaket.java
C:\java\progjava \java callpaket
merhaba

Yukarıda görüldüğü gibi main metodu içeren paket00 sınıfı java komutu ile başına paketin ismi getirilerek çalıştırılmıştır. Public olan paket0 sınıfı ise callpaket adlı programda import ile yüklenip daha sonra çağırılınca kurucu metodu çalışmıştır.

4. Grafikler
Javada grafik çizim kütüphanesi geniştir ve çizim daha kolaydır. Applet direk Graphics sınıfı ile çalıştığı için applet yüzeyi çizim alanı olur. Koordinat sistemi kullanımı daha önceden alışık olunan sistemler gibidir. Yani ekranın üst sol köşesi (0,0) noktası olup ekranı sağına gidildikçe x değeri, aşağı gidildikçe y değeri artar. Maksimum (x,y) değeri ekranın çözünürlük değeridir. Mesela, 640*480 çözünürlük için maksimum x değeri 639, y değeri ise 479 olacaktır. Bu bölümde sadece 2 boyutlu temel grafik konuları sunulacak olup, Java çok daha fazla çizim kabiliyetine sahiptir.
4.a Renk
Renk için Color nesnesi kullanılır. Color nesnesinin değişik sayıda kurucu metodu vardır. Mesela kırmızı rengi, Color.red, new Color(255,0,0) veya new Color(1.0, 1.0, 1.0) komutlarından birisi ile oluşturabiliriz. Red, Green, Blue kelimelerinin kısaltılmışı olan RGB renkteki kırmızı, yeşil ve mavi tonlaın oranını ister 0-255 arasındaki tamsayı rakamlarla, isterse 0.0-1.0 arasındaki ondalık sayılarla ifade edebilir. R,G ve B değerlerinin eşit olması gri bir tonlamayı ifade eder, üçü de 0 olursa siyahı, üçü de 255 veya 1.0 olursa beyazı ifade eder. Diğer bir renk ifade standardı olan HSB ile RGB arasında dönüşüm Java komutları ile yapılabilir. Java grafik ortamında 24 bit renk derinliği sağlanabilir.
Bir appletin veya örneğin panelin arkaplan rengini değiştirmek için setBackground() komutu kullanılır. Kullanılmazsa varsayılan arkaplan rengi gri veya beyaz olabilir.
Yazım veya çizim rengini değiştirmek için ise Graphics nesnesinin setColor() metodu kullanılır. O anda çalışılan rengin muhteviyatını öğrenmek için getGreen(), getBlue(), getRed() gibi komutlar bulunmaktadır. Renklerin kullanımı daha sonra verilecek örnekte görülecektir.

4.b Çizim
İki boyutlu çizim komutları aşağıdaki örnekte verilmiştir. Java grafik kütüphanesinde pixel çizdirmek için komut bulunmadığı için drawLine komutuna başlangıç ve bitiş koordinatları aynı verilerek bu sağlanmaktadır. Üç boyutlu dikdörtgen çizimi sağlayan draw3DRect komutu siyah renkte iyi sonuç vermemektedir, çünkü aslında gölgelendirme yaparak 3 boyutlu hissi uyandırmaktadır.

Yukarıda Oval için örnek komut satırı verilmiştir. Yani cismin merkez koordinatı önemli değildir, sadece bir dikdörtgen olarak düşünüldüğünde sol üst koordinatı ve o dikdörtgenin en ve boy değerleri verilmektedir. Tüm çizimlerde bu mantık uygulanır. Yalnızca yay da ayrıca açı değerleri de vardır. Birinci açı yayın başlayacağı dereceyi, ikinci açı da yayın boyutunu değil yayın bitiş açısının 0 açısından ne kadar uzakta olduğunu verir.

4.c Font ve Yazı
Grafiksel yazı biçimimi değiştirmek için Font nesnesi ve setFont() komutu kullanılır. Font için 3 parametre önemlidir. 1. Font ismi: “TimesRoman”, “Arial”, “Courier” gibi. 2. Font tipi: Font.PLAIN ya da 0 düz yazım tipidir. Font.BOLD ya da 1 kalın yazı için, Font.ITALIC ya da 2 italik yazı için,Font.BOLD+Font.ITALIC ya da 3 hem kalın hem de italik yazı için kullanılır. 3. Punto: Yazı fontunun ne kadar büyük olacağı piksel cinsinden verilir.
Font f=new Font(“TimesRoman”,Font.ITALIC,30) ;
4.d Bütün Grafik Konularını İçeren Bir Applet Örneği
grafik.java
import java.awt.*;
import java.applet.Applet;

public class grafik extends Applet {

public void paint(Graphics g) {

Font ff=new Font("Helvetica",Font.PLAIN,10); g.setFont(ff);
g.drawRect(10,10,70,70); g.fillRect(10,100,70,70);
g.drawString("drawRect",10,90); g.drawString("fillRect",10,180);

g.setColor(new Color(230,56,2));
g.drawRoundRect(100,10,70,70,20,30); g.fillRoundRect(100,100,70,70,40,10);
g.drawString("drawRoundRect",100,90); g.drawString("fillRoundRect",100,180);

g.setColor(Color.red);
g.draw3DRect(180,10,70,70,true); g.draw3DRect(180,100,70,70,false);
g.drawString("draw3DRect",180,90); g.drawString("fill3DRect",180,180);

int xler[]= {289, 344, 347, 392, 303, 308, 276 };
int yler[]= {3, 44, 6, 40, 78, 50, 76 };
int yl[]= {103, 144, 106, 140, 178, 150, 176 };
int pts=xler.length;

Color c=new Color(0,250,0); g.setColor(c);
g.drawPolygon(xler,yler,pts); g.fillPolygon(xler,yl,pts);
g.drawString("drawPolygon",300,100); g.drawString("fillPolygon",300,190);

g.setColor(Color.gray);
g.drawArc(400,10,80,60,30,330); g.fillArc(400,100,80,60,100,300);
g.drawString("drawArc",400,90); g.drawString("fillArc",400,180);

g.setColor(new Color(30,56,250));
g.drawOval(500,10,80,60); g.fillOval(500,100,60,80);
g.drawString("drawOval",500,90); g.drawString("fillOval",500,200);

Font f=new Font("Arial",Font.PLAIN,14);
Font fB=new Font("TimesRoman",1,16);
Font fI=new Font("Helvetica",Font.ITALIC,18);
Font fBI=new Font("Tahoma",Font.BOLD+Font.ITALIC,20);

g.setColor(Color.blue);g.setFont(f);
g.drawString("Bu düz Arial düz fontla yazılmıştır. 14 punto ",10,200);
g.setColor(new Color(0,255,0));g.setFont(fB);
g.drawString("Bu koyu TimesRoman fontla yazılmıştır. 16 punto",10,230);
g.setColor(Color.yellow);g.setFont(fI);
g.drawString("Bu italik Helvetica fontla yazılmıştır. 18 punto ",10,260);
g.setColor(Color.gray);g.setFont(fBI);
g.drawString("Bu koyu ve italik Tahoma fontla yazılmıştır. 20 punto ",10,290);

setBackground(new Color(230,250,230));

g.setColor(Color.red);
g.fillRect(50,300,200,140);
g.setColor(Color.white);
g.fillOval(70,320,100,100);
g.setColor(Color.red);
g.fillOval(100,330,80,80);

// TURK BAYRAGI CIZIMI
int i,faz,aci,icfaz,xm,ym,dr,ir ;
int koordx[]=new int[10];
int koordy[]=new int[10];
faz=36; aci=(int) (360/5); icfaz=(int)(aci/2); xm=185; ym=370; dr=30; ir=10;

for(i=0;i<koordx.length;i+=2) {
koordx[i] = xm + (int) ( dr * Math.cos(Math.PI * faz / 180));
koordx[i+1] = xm + (int) ( ir * Math.cos(Math.PI * (icfaz+faz) / 180));
koordy[i] = ym + (int) ( dr * Math.sin(Math.PI * faz / 180));
koordy[i+1] = ym + (int) ( ir * Math.sin(Math.PI * (icfaz+faz) / 180));
faz+=aci;
}
g.setColor(Color.white); g.fillPolygon(koordx,koordy,koordx.length);

g.setFont(new Font("Arial",0,20)); g.setColor(Color.black); g.drawString("TURK BAYRAGI",270,350);
}
}

Gelecek Haftalarda İşlenecek Konular:
- Arayüz, yerleşim yöneticileri, olay kontrolleri
- Çok kanallılık, istisna işleme

 
Ana Menü
Everest
İletişim
Hakkımızda
Web Tasarım
Hosting Hizmetleri
Multi Medya Cd
İnteraktif Cd Tasarımı
Arama Motoru Op.
Web Site Analizi
Web Paketlerimiz
Türk Radyoları
Türk TV Kanalları
Dersler
Autocad Dersleri
Access
ASP
Ağ Teknolojisi
C++
Delphi
DNS
Assembler
Scriptler
Bilgisayar
CGI
DVD
Frontpage
FTP
Corel Dersleri
Web Tasarım Dersleri
Temel Excel Bilgiler
GÜVENLİK TEMELİ:
ICON AUTHOR
IP Adresleme
Java
ISA HAKKINDA HERŞEY
LINUX KURULUMU VE BAŞLANGIÇ
SQL
Mobil Uygulamaları
ORACLE VTYS
Yapısal Sorgulama Dili
PERL ile CGI
RAID
Personal Web Server
TURBO PASCALA GİRİŞ
PhotoShop Dersleri
Referanslarımız
Havuz
Havuz
Reklam Ajans
Web Tasarım
Hosting
Reseller
Güvenlik Kıyafetleri
Güvenlik Elbiseleri
Güvenlik Üniformaları
Güvenlik Kıyafeti
Zabıta Kıyafetleri
Polis Kıyafetleri
İtfaiye kıyafetleri
Hosting
Linux Reseller
Matbaa
Katalog
Dosya
Broşür
Afiş
Poster
Ambalaj
Karton Kutu
Dergi
Kitap
Fotoğraf Çekimi
E-Ticaret
Reklam
Hosting
Arama Motoru Optimizasyonu
Web Site Tasarımı
Web Site Şablonları
Web Sayfası
autocad kursu
SolidWorks Kursu
Catia kursu
Bilgisayarlı muhasebe kursu
Grafikerlik kursu
Web yazılım kursu
Web tasarım kursu
Temel ingilizce kursu
ArchiCad Kursu
Mastercam kursu
Sap 2000 kursu
Bilgisayar işletmenliği kursu
Dış Cephe Kaplama
Otomatik Kepenk
Panjur
Alüminyum Doğrama
Korkuluk
Merdiven Korkuluğu
Dış Cephe Kaplama
Otomatik Kepenk
Alüminyum Doğrama
Korkuluk
Merdiven Korkuluğu
Karot
Beton Kesme
Beton Delme
Hidrolik Kesim
Ankraj
Hidrolik Kesim
Karot
Kartvizit
Acil Kartvizit
Cepli Dosya
Fatura
Matbaa
Broşür
Katalog
Acil kartvizit
Broşür
Katalog
Fatura
Cepli Dosya
Matbaa
Otomasyon
Kenar Kontrol
Tansiyon Kontrol
Ambalaj Makina
Makina otomasyon