Emir Elibol
Vakıf Katılım Ar-Ge Merkezi
5 min readJun 21, 2024

--

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() {

}





}

--

--