Java Oop composition ile Bilgisayar özellikleri programı

Mayıs 5, 2020 0 Yazar: alikperislam
import java.util.Scanner;
// kalıtımda İS-A burda ise HAS - A ilişkisi vardır burda sahip olma var kalıtımda aynı özellikleri taşıma.
// kalıtımdan en büyük farkı burda sahip olma var ama kalıtımda aynı özelliklerin taşınılıyor olması durumu vardı.
// bilgisayar parçaları, araba parçaları vs programları composition mantığı ile yapılır ama işçi-çalışan kalıtım ile
class Kasa{
private String model;
private String marka;
private String malzeme;
private String isletimSistemi;

public Kasa(String model,String marka,String malzeme,String isletimSistemi){
this.model=model;
this.marka=marka;
this.malzeme=malzeme;
this.isletimSistemi=isletimSistemi;
}

public void degistirİsletimSistemi(String yeni_isletim){
this.isletimSistemi=yeni_isletim;
}
public void degistirMArka(String yeni_marka){
this.marka=yeni_marka;
}

public void setModel(String model){
this.model=model;
}
public String getModel(){
return model;
}

public void setMarka(String marka){
this.marka=marka;
}
public String getMarka(){
return marka;
}

public void setMalzeme(String malzeme){
this.malzeme=malzeme;
}
public String getMalzeme(){
return malzeme;
}

public void setIsletimSistemi(String isletimSistemi){
this.isletimSistemi=isletimSistemi;
}
public String getIsletimSistemi(){
return isletimSistemi;
}
}

class Resolution{
private double en;
private double boy;

public Resolution(double en,double boy){
this.en=en;
this.boy=boy;
}

public void setEn(double en){
this.en=en;
}
public double getEn(){
return en;
}

public void setBoy(double boy){
this.boy=boy;
}
public double getBoy(){
return boy;
}

}

class Monitor{
// Asıl composition işlemi burada yapılıyor manotor içerisinde resolution'ı içerdiği için Resolution class'ında ki
// özellikleri buraya ait olarak göstermiş oluyoruz yani HAS - A ilişkisi var
private String model;
private String marka;
private double inc;
private Resolution resolution;

public Monitor(String model,String marka,double inc, Resolution resolution){
this.model=model;
this.marka=marka;
this.inc=inc;
this.resolution=resolution;
}

public void degistir_marka(String yeni_marka){
this.marka=yeni_marka;
}

public void deghistir_inc(double yeni_inc){
this.inc=yeni_inc;
}

public void monitor_ac(){
System.out.println("Monitor açılıyor...\nMonitor açıldı.");
}
public void monitor_kapat(){
System.out.println("Monitor kapatılıyor...\nMonitor kapatıldı.");
}

public void setModel(String model){
this.model=model;
}
public String getModel(){
return model;
}

public void setMarka(String marka){
this.marka=marka;
}
public String getMarka(){
return marka;
}

public void setInc(double inc){
this.inc=inc;
}
public double getInc(){
return inc;
}

public void setResolution(Resolution resolution){
this.resolution=resolution;
}
public Resolution getResolution(){
return resolution;
}
}

class Anakart{
private String ram_tipi;
private String marka;
private String anakart_boyutu;
private int ram_frekansı;
private int slot_sayısı;

public Anakart(String ram_tipi,String marka,String anakart_boyutu,int ram_frekansı,int slot_sayısı){
this.ram_tipi=ram_tipi;
this.marka=marka;
this.anakart_boyutu=anakart_boyutu;
this.ram_frekansı=ram_frekansı;
this.slot_sayısı=slot_sayısı;
}

public void slotsayısı_arttır(int slotsayi){
this.slot_sayısı+=slotsayi;
}

public void setRam_tipi(String ram_tipi){
this.ram_tipi=ram_tipi;
}
public String getRam_tipi(){
return ram_tipi;
}

public void setMarka(String marka){
this.marka=marka;
}
public String getMarka(){
return marka;
}

public void setAnakart_boyutu(String anakart_boyutu){
this.anakart_boyutu=anakart_boyutu;
}
public String getAnakart_boyutu(){
return anakart_boyutu;
}

public void setRam_frekansı(int ram_frekansı){
this.ram_frekansı=ram_frekansı;
}
public int getRam_frekansı(){
return ram_frekansı;
}

public void setSlot_sayısı(int slot_sayısı){
this.slot_sayısı=slot_sayısı;
}
public int getSlot_sayısı(){
return slot_sayısı;
}
}


class Bilgisayar{
private Kasa kasa;
private Monitor monitor;
private Anakart anakart;

public Bilgisayar(Kasa kasa, Monitor monitor, Anakart anakart){
this.kasa=kasa;
this.monitor=monitor;
this.anakart=anakart;
}

public void bilgisayar_ac(){
System.out.println("Bilgisayar açılıyor....\nBilgisayar açıldı.");
}
public void bilgisayar_kapat(){
System.out.println("Bilgisayar kapatılıyor...\nBilgisayar kapatıldı.");
}

public void setKasa(Kasa kasa){
this.kasa=kasa;
}
public Kasa getKasa(){
return kasa;
}

public void setMonitor(Monitor monitor){
this.monitor=monitor;
}
public Monitor getMonitor(){
return monitor;
}

public void setAnakart(Anakart anakart){
this.anakart=anakart;
}
public Anakart getAnakart(){
return anakart;
}
}

public class test {
public static void main(String[]args){
Anakart anakart = new Anakart("DDR4","Gigabyte GA-A320M-H","Micro ATX",2133,2);
Resolution resolution = new Resolution(1920,1080);
Monitor monitor = new Monitor("Gd4-h","Samsung",15.4,resolution);
Kasa kasa = new Kasa("Mag Forge 100-R","MSI","Tamperli cam","Kali Linux 2020.1");
Bilgisayar pc = new Bilgisayar(kasa,monitor,anakart);

System.out.println("********** Bilgisayarım Uygulamasına Hoş Geldiniz **********");
String secenekler="\n1 - Bigisayarı açmak\n" +
"2 - Bilgisayarı kapatmak\n" +
"3 - Monitorü açmak\n" +
"4 - Monitorü kapatmak\n" +
"5 - Kasa özellikleri için\n" +
"6 - Monitor özellikleri için\n" +
"7 - Anakart özellikleri için\n" +
"8 - Bilgisayar genel özellikleri için\n" +
"9 - Anakart slot sayısı arttırmak için\n" +
"10 - Kasa işletim sistemini değiştirmek için\n" +
"11 - Kasa markasını değiştirmek için\n" +
"12 - Monitor marka değiştirmek için\n" +
"13 - Monitor inç değerini değiştirmek için\n" +
"0 - Uygulamadan çıkış yapmak için";
System.out.println(secenekler);
while (true){
Scanner scan = new Scanner(System.in);
System.out.print("\nYapmak istediğiniz işlemi giriniz lütfen : ");
int secenek =scan.nextInt();

if(secenek==0){
System.out.println("Sistemden çıkış yapılıyor bekleyiniz...\nçıkış yapıldı.");
break;
}

else if(secenek==1){
pc.bilgisayar_ac();
}

else if(secenek==2){
pc.bilgisayar_kapat();
break;
}

else if(secenek==3){
pc.getMonitor().monitor_ac();
}

else if(secenek==4){
pc.getMonitor().monitor_kapat();
}

else if(secenek==5){
System.out.println("*** Kasa özellikleri ekranı ***");
System.out.println( "\nKasa markası : "+pc.getKasa().getMarka());
System.out.println( "Kasa malzemesi : "+pc.getKasa().getMalzeme());
System.out.println( "Kasa modeli : "+pc.getKasa().getModel());
System.out.println( "Kasa işletim sistemi : "+pc.getKasa().getIsletimSistemi());
}

else if(secenek==6){
System.out.println("*** Monitor özellikleri ekranı ***");
System.out.println( "\nMonitor markası : "+pc.getMonitor().getMarka());
System.out.println( "Monitor inç : "+pc.getMonitor().getInc());
System.out.println( "Monitor modeli : "+pc.getMonitor().getModel());
System.out.println( "Monitor en : "+pc.getMonitor().getResolution().getEn());
System.out.println( "Monitor boy : "+pc.getMonitor().getResolution().getBoy());
}

else if(secenek==7){
System.out.println("*** Anakart özellkleri ekranı ***");
System.out.println( "\nAnakart markası : "+pc.getAnakart().getMarka());
System.out.println( "Anakart ram slotu : "+pc.getAnakart().getSlot_sayısı());
System.out.println( "Ram tipi : "+pc.getAnakart().getRam_tipi());
System.out.println( "Ram frekansı : "+pc.getAnakart().getRam_frekansı());
System.out.println( "Anakart boyutu : "+pc.getAnakart().getAnakart_boyutu());
}

else if(secenek==8){
System.out.println("\n***** Bilgisayar Genel Özellikleri Ekranı *****");
System.out.println( "\nKasa markası : "+pc.getKasa().getMarka());
System.out.println( "Kasa malzemesi : "+pc.getKasa().getMalzeme());
System.out.println( "Kasa modeli : "+pc.getKasa().getModel());
System.out.println( "Kasa işletim sistemi : "+pc.getKasa().getIsletimSistemi());
System.out.println( "\nMonitor markası : "+pc.getMonitor().getMarka());
System.out.println( "Monitor inç : "+pc.getMonitor().getInc());
System.out.println( "Monitor modeli : "+pc.getMonitor().getModel());
System.out.println( "Monitor en : "+pc.getMonitor().getResolution().getEn());
System.out.println( "Monitor boy : "+pc.getMonitor().getResolution().getBoy());
System.out.println( "\nAnakart markası : "+pc.getAnakart().getMarka());
System.out.println( "Anakart ram slotu : "+pc.getAnakart().getSlot_sayısı());
System.out.println( "Ram tipi : "+pc.getAnakart().getRam_tipi());
System.out.println( "Ram frekansı : "+pc.getAnakart().getRam_frekansı());
System.out.println( "Anakart boyutu : "+pc.getAnakart().getAnakart_boyutu());
}

else if(secenek==9){
System.out.print("eklenen slot sayısını giriniz :");
int slot=scan.nextInt();
System.out.println("\nEski Anakart slot sayısı : "+pc.getAnakart().getSlot_sayısı());
pc.getAnakart().slotsayısı_arttır(slot);
System.out.println("Yeni Anakart slot sayısı : "+pc.getAnakart().getSlot_sayısı());
}

else if(secenek==10){
System.out.print("Yeni şletim sistemini giriniz :");
String isletim = scan.nextLine();
System.out.println("\nEski işletim sistemi : "+pc.getKasa().getIsletimSistemi());
pc.getKasa().degistirİsletimSistemi(isletim);
System.out.println("Yeni işletim sistemi : "+pc.getKasa().getIsletimSistemi());
}

else if(secenek==11){
System.out.print("Yeni kasa markasını giriniz :");
String kasamarka=scan.nextLine();
System.out.println("\nEski kasa markası : "+pc.getKasa().getMarka());
pc.getKasa().degistirMArka(kasamarka);
System.out.println("Yeni kasa markası : "+pc.getKasa().getMarka());
}

else if(secenek==12){
System.out.print("Yeni monitor markasını giriniz :");
String monitormarka = scan.nextLine();
System.out.println("\nEski monitor markası : "+pc.getMonitor().getMarka());
pc.getMonitor().degistir_marka(monitormarka);
System.out.println("Yeni monitor markası : "+pc.getMonitor().getMarka());
}

else if(secenek==13){
System.out.print("Yeni monitor inç değerini ghiriniz :");
double incd=scan.nextDouble();
System.out.println("\nEski monitor inç değeri : "+pc.getMonitor().getInc());
pc.getMonitor().deghistir_inc(incd);
System.out.println("Yeni monitor inç değeri: "+pc.getMonitor().getInc());
}
}
}