Java Programlamada Class ve Interface Örneği

Bu gün benim için özel bir gün:) Çünkü bu yazı,  sitede yayınladığım ilk Java programı. Belki bu programla kitabın biraz ortasından girmiş olacağım. Belki bu örnek java programlamaya yeni başlayanlar için pek de faydalı olmayacak ama yine de diğer arkadaşlar için iyi bir interface ve class örneği olduğunu düşünüyorum.
Class kavramıyla daha önceden karşılaştığınızı düşünerek o konuya girmeyeceğim ama interface kavramını kısaca açıklamak istiyorum. Interface, javada aslına bakarsanız class kökenli bir kavramdır. Abstract anahtar sözcüğünü kullanmadığımız halde abstract yapıdadır. İçinde de abstract metodlar bulunur. Abstract konusuna ise sonraki yazılarımda değinmeyi düşünüyorum.
Programa geçersek, program beş class ve bir interface olmak üzere toplam altı bölümden oluşuyor. Ben bu bölümleri ayrı ayrı vereceğim. Aslında bu durumun karmaşıklığa yol açacağını düşündüm ama sonuçta java bir nesne yönelimli programlama dilidir. Java bilmek sadece kodlama bilmek demek değildir. Aynı zamanda parçaları birleştirerek bir bütün elde etmeyi,  başka bir kod bloğundan alınmış bir classı programda kullanmayı da bilmek gerekiyor.

Main class’ ı (main metodunu içeriyor)
[cc lang = ‘java’]
package soru1;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
person[] array=new person[5];
int choose;
Scanner input=new Scanner(System.in);
String Name,Surname,tez;
float not;
for(int i=0;i<5;i++)
{
System.out.print(“Grad icin 1’e, Undergrad icin 2’ye, Instructor icin 3’e basiniz”);
choose=input.nextInt();
switch(choose)
{
case 1:
Grad g=new Grad();
array[i]=g;
System.out.print(“öğrencinin adı-soyadını giriniz”);
Name=input.nextLine();
Surname=input.nextLine();
g.setName(Name);
g.setSurname(Surname);
System.out.print(“ogrencinin notunu giriniz…”);
not=input.nextInt();
g.setGPA(not);
System.out.print(“ogrencinin tezini giriniz…\n”);

tez=input.nextLine();
tez=input.nextLine();

g.tez=tez;
break;
case 2:
UnderGrad u=new UnderGrad();
array[i]=u;
System.out.print(“öğrencinin adı-soyadını giriniz”);
Name=input.nextLine();
Surname=input.nextLine();
u.setName(Name);
u.setSurname(Surname);
System.out.print(“ogrencinin notunu giriniz…”);
not=input.nextInt();
u.setGPA(not);
System.out.print(“ogrencinin bitirme projesini giriniz…\n”);
u.bitirme=input.nextLine();
u.bitirme=input.nextLine();
break;
case 3:
Instructor inst=new Instructor();
array[i]=inst;
System.out.print(“Öğretim üyesinin adı-soyadını giriniz”);
Name=input.nextLine();
Surname=input.nextLine();
inst.setName(Name);
inst.setSurname(Surname);
break;
}
}
for(person pp: array)
{
System.out.println(pp.getName()+” “+pp.getSurname());
}
}
}
[/cc]

person Interface’ i

[cc lang = ‘java’]
package soru1;

public interface person
{
public String getName();
public String getSurname();
}
[/cc]

student class’ ı (abstract class-person Interface’inden kalıtım alır)

[cc lang = ‘java’]
package soru1;
public abstract class student implements person
{
public abstract float getGPA();
private String Name;
private String Surname;
public String getName()
{
return Name;
}
public void setName(String name)
{
Name=name;
}
public String getSurname()
{
return Surname;
}
public void setSurname(String surname)
{
Surname=surname;
}
}
[/cc]

Grad class’ ı (student class’ ından kalıtım alır –inheritance–)

[cc lang = ‘java’]
package soru1;
public class Grad extends student
{
private float gpa;
public String tez;
public float getGPA()
{
return gpa;
}
public void setGPA(float GPA)
{
gpa=GPA;
}
}
[/cc]

UnderGrad class’ ı(student class’ ından kalıtım alır –inheritance–)

[cc lang = ‘java’]
package soru1;

public class UnderGrad extends student
{
private float gpa;
public String bitirme;
public float getGPA()
{
return gpa;
}
public void setGPA(float GPA)
{
gpa=GPA;
}
}

[/cc]

Instructor class’ ı(person interface’ inden kalıtım alır –inheritance–)
[cc lang = ‘java’]
package soru1;

public class Instructor implements person
{
private String Name;
private String Surname;
public String getName()
{
return Name;
}
public void setName(String name)
{
Name=name;
}
public String getSurname()
{
return Surname;
}
public void setSurname(String surname)
{
Surname=surname;
}
}
[/cc]

Programın parçaları bu şekilde. Ben sıralı bir biçimde parçaları sizlere sundum. Birleştirmenizi kolaylaştırmak amacıyla programın işlevini kısaca açıklayayım. Program, üç çeşit insanın bilgilerini tutma işlevini gerçekleştiriyor. ilk aşamada insanı öğrenci ve öğretim üyesi olarak ayırdık. Sonrasında öğrenci de kendi içinde lisans ve lisansüstü olarak ikiye ayrıldı. Tabi bu ayrımların her biri class’ lara ve interface’ e karşılık geliyor. Kalıtım ve abstract kavramlarına ise sonraki yazılarımda değineceğim. Görüşmek üzere…