Test Mühendisleri için Java Part 2
Sınıf Oluşturma
public class Insan {
private int boy = 177;
private int yas = 30;
private int kilo = 97;
private String gozRengi = "Ela";
public void konsolaYazdir() {
System.out.println("İnsanın boyu: " + boy + " yaşı: " + " kilosu: " + kilo + " ve göz rengi: " + gozRengi);
}
}
public class Main {
public static void main(String[] args) {
Insan ilkInsan = new Insan();
ilkInsan.konsolaYazdir();
ilkInsan.konsolaYazdir();
}
}
İnsanın boyu: 177 yaşı: kilosu: 97 ve göz rengi: Ela
İnsanın boyu: 177 yaşı: kilosu: 97 ve göz rengi: Ela
Process finished with exit code 0
Sınıf Oluşturma Pratik
public class Lamba {
public boolean durumu = false; //private olursa dışarıdan erişim sağlanmaz.
public void lambaDurumu(String konum){
if (durumu){
System.out.println(konum + " Lamba açık.");
}
else {
System.out.println(konum + " Lamba kapalı.");
}
}
}
public class Main {
public static void main(String[] args) {
// Insan ilkInsan = new Insan();
// ilkInsan.konsolaYazdir();
// ilkInsan.konsolaYazdir();
// }
Lamba salonLambasi = new Lamba();
salonLambasi.lambaDurumu("salon");
salonLambasi.durumu = true;
salonLambasi.lambaDurumu("salon");
Lamba yatakLambasi = new Lamba();
yatakLambasi.lambaDurumu("yatak odası");
yatakLambasi.durumu = true;
yatakLambasi.lambaDurumu("yatak odası yeni");
yatakLambasi.durumu = false;
yatakLambasi.lambaDurumu("yatak odası son");
}
}
salon Lamba kapalı.
salon Lamba açık.
yatak odası Lamba kapalı.
yatak odası yeni Lamba açık.
yatak odası son Lamba kapalı.
Process finished with exit code 0
Constructors
public class Lamba {
public boolean durumu = false;
private String konum;
public Lamba(String odaKonumu){ // Yapıcı sınıfımıza parametre verdik.
System.out.println(" Yeni nesnemiz oluşturuldu"); // Nesneyi oluşturduğumuzda ilk burası çalışacak.
konum = odaKonumu;;
System.out.println("odamızın konumu: " + konum);
}
public void lambaDurumu(){
if (durumu){
System.out.println(konum + " Lamba açık.");
}
else {
System.out.println(konum + " Lamba kapalı.");
}
}
}
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
// Insan ilkInsan = new Insan();
// ilkInsan.konsolaYazdir();
// ilkInsan.konsolaYazdir();
// }
Lamba salonLambasi = new Lamba("salon");
salonLambasi.lambaDurumu();
salonLambasi.durumu = true;
salonLambasi.lambaDurumu();
Lamba yatakLambasi = new Lamba("yatak odası");
yatakLambasi.lambaDurumu();
yatakLambasi.durumu = true;
yatakLambasi.lambaDurumu();
yatakLambasi.durumu = false;
yatakLambasi.lambaDurumu();
}
}
Yeni nesnemiz oluşturuldu
odamızın konumu: salon
salon Lamba kapalı.
salon Lamba açık.
Yeni nesnemiz oluşturuldu
odamızın konumu: yatak odası
yatak odası Lamba kapalı.
yatak odası Lamba açık.
yatak odası Lamba kapalı.
Process finished with exit code 0
Dört Temel OOP Prensibi
Encapsulation
Abstraction
Intheritance
Polymorphism
Encapsulation
Oluşturulan bir sınıf içerisinde kullanılan işlemler birleştirilerek tek bir işlem gibi gösterilir. Erişim belirleyiciler sayesinde kapsülleme kolay yapılır.
public class Kopek {
private String isim;
private String cins;
private int yas;
public Kopek(String isim, String cins, int yas){
this.isim = isim; //Sınıf içerisendeki değişken
this.cins = cins;
this.yas = yas;
}
public String getIsim() {
return isim;
}
public String getCins() {
return cins;
}
public int getYas() {
return yas;
}
public void setIsim(String isim) {
this.isim = isim;
}
public void setCins(String cins) {
this.cins = cins;
}
public void setYas(int yas) {
this.yas = yas;
}
}
public class Main {
public static void main(String[] args) {
Kopek ilkKopegim = new Kopek("Rex","Golden",10);
System.out.println("Köpeğimin adı: " + ilkKopegim.getIsim() + " cinsi: " + ilkKopegim.getCins() + " ve yaşı: " + ilkKopegim.getYas());
ilkKopegim.setIsim("Karabaş");
System.out.println("Köpeğimizin yeni ismi " + ilkKopegim.getIsim());
}
}
Köpeğimin adı: Rex cinsi: Golden ve yaşı: 10
Köpeğimizin yeni ismi Karabaş
Process finished with exit code 0
Abstraction
Abstraction, uygulamanın karmaşıklıklarını gizler ve daha basit arayüzleri ortaya çıkarır.
abstract class Hayvan {
abstract void sesCikar(); // Miras alındığında kullanılması zorunlu
public void uyku(){
System.out.println("Hayvan uyuyor");
}
}
Intheritance
Bir sınıfta tanımlanmış değişkenlerin veya metotların yeniden tanımlanmasına gerek olmaksızın yeni bir sınıfa taşıyabilmesidir.
public class Kopek extends Hayvan{ // Abstract sınıfı interit ettik.
private String isim;
private String cins;
private int yas;
public Kopek(String isim, String cins, int yas){
this.isim = isim; //Sınıf içerisendeki değişken
this.cins = cins;
this.yas = yas;
}
public String getIsim() {
return isim;
}
public String getCins() {
return cins;
}
public int getYas() {
return yas;
}
public void setIsim(String isim) {
this.isim = isim;
}
public void setCins(String cins) {
this.cins = cins;
}
public void setYas(int yas) {
this.yas = yas;
}
@Override
void sesCikar(){ //Metodu override ederek tekrar kullanacağız. System.out.println("Hav Hav");
};
}
public class Main {
public static void main(String[] args) {
Kopek ilkKopegim = new Kopek("rex","Golden",10);
ilkKopegim.sesCikar();
ilkKopegim.uyku();
}
}
Hav Hav
Hayvan uyuyor
Process finished with exit code 0
Polymorphism
Uygulamanın girdi türlerine bağlı olarak verileri farklı şekilde işleme yeteneğidir.
abstract class Hayvan { // Köpek ve Kedi class ına interit edip aynı fonksiyonu kendilerine özel olarak kullanacağız.
abstract void sesCikar();
public void uyku(){
System.out.println("Hayvan uyuyor");
}
}
public class Kopek extends Hayvan{
private String isim;
private String cins;
private int yas;
public Kopek(String isim, String cins, int yas){
this.isim = isim; //Sınıf içerisendeki değişken
this.cins = cins;
this.yas = yas;
}
public String getIsim() {
return isim;
}
public String getCins() {
return cins;
}
public int getYas() {
return yas;
}
public void setIsim(String isim) {
this.isim = isim;
}
public void setCins(String cins) {
this.cins = cins;
}
public void setYas(int yas) {
this.yas = yas;
}
@Override
void sesCikar(){
System.out.println("Hav Hav");
};
}
public class Kedi extends Hayvan{
@java.lang.Override
void sesCikar() {
System.out.println("Miyav miyav");
}
}
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
Kopek ilkKopegim = new Kopek("rex","Golden",10);
ilkKopegim.sesCikar(); //Köpek classı için kullandık.
ilkKopegim.uyku();
Kedi kedi = new Kedi();
kedi.sesCikar(); // Kedi classı için kullandık.
kedi.uyku();
}
}
Hav Hav
Hayvan uyuyor
Miyav miyav
Hayvan uyuyor
Process finished with exit code 0
Overriding
public class Kopek extends Hayvan{
private String isim;
private String cins;
private int yas;
public Kopek(String isim, String cins, int yas){
this.isim = isim; //Sınıf içerisendeki değişken
this.cins = cins;
this.yas = yas;
}
public String getIsim() {
return isim;
}
public String getCins() {
return cins;
}
public int getYas() {
return yas;
}
public void setIsim(String isim) {
this.isim = isim;
}
public void setCins(String cins) {
this.cins = cins;
}
public void setYas(int yas) {
this.yas = yas;
}
@Override
void sesCikar(){
System.out.println("Hav Hav");
};
@Override //Hayvan classı içerisinde ki metot overriding edildi.
public void uyku(){
System.out.println("Köpek uyurken horluyor ....z....");
}
}
public class Main {
public static void main(String[] args) {
Kopek ilkKopegim = new Kopek("rex","Golden",10);
ilkKopegim.sesCikar();
ilkKopegim.uyku();
Kedi kedi = new Kedi();
kedi.sesCikar();
kedi.uyku();
}
}
Hav Hav
Köpek uyurken horluyor ....z....
Miyav miyav
Hayvan uyuyor
Process finished with exit code 0
Super Anahtar Kelimesi
Ana sınıfta bulunan aynı isimli metotlara erişilebilir.
Ana sınıfta bulunan constructora erişilebilir.
Ana sınıfta bulunan farklı değişkenlere erişilebilir.
public class Kopek extends Hayvan{
public Kopek(String isim,String cins,int yas){
super(isim,cins,yas);
}
@Override
void sesCikar(){
System.out.println("Hav Hav");
};
@Override
public void uyku(){
super.uyku(); // Ana sınıfta bulunan uyku() fonksiyonuna erişildi.
System.out.println("Köpek uyurken horluyor ....z....");
}
}
public class Kedi extends Hayvan{
public Kedi(String isim, String cins, int yas) {
super(isim, cins, yas); //Ana sınıfta bulunan constructor a erişildi.
}
@Override
void sesCikar() {
System.out.println("Miyav miyav");
}
public void komut(){
System.out.println(super.isim + " buraya gel"); //Ana sınıfta bulunan isim değişkenine erişildi.
}
}
Interface
Interface soyutlama, polimorfizm ve çoklu kalıtım etmek için kullanılır.
Interfaceler sözleşmeler gibidir.
public interface Sayfa{
void tusaBas(); //İmlement edildiğinde zorunlu kullanılması gerekiyor.
void elementBul();
}
public interface Menu {
void widget();
}
public class GirisSayfasi implements Sayfa,Menu{ //İki tane Interface kalıtım olarak alındı.
@java.lang.Override
@Override
public void tusaBas() { //Metotlar zorunlu olarak kullanıldı.
System.out.println("Tuşa basıldı.");
}
@Override
public void elementBul() {
System.out.println("Element bulundu.");
}
@Override
public void widget() {
}
}