Nejste přihlášen/a.

Přihlásit se do poradny

 

Do jaké míry má být OOP objektově orientované?

Od: asdf odpovědí: 1 změna:

Dobrý den, zajímalo by mě které řešení pomocí objektů je podle Vás lepší, co je praktičtější/ co je víc správně, popř. jak by to mělo být správně? Do jaké míry by mělo být OOP objektově orientovaným, co by mělo být v "main()" a co v jiné třídě, jak to poznat?

Kalkulačka #1 - main

package kalkulator;

import java.util.Scanner;

public class main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

operace operace = new operace();

System.out.print("Zadej první číslo: ");

operace.setPrvniCislo(Double.parseDouble(sc.nextLine());

System.out.print("Zadej druhé číslo: ");

operace.setDruheCislo(Double.parseDouble(sc.nextLine());

System.out.println("Vyber operaci: ");

System.out.println("1 - sčítání");

System.out.println("2 - odčítání");

System.out.println("3 - násobení");

System.out.println("4 - dělení");

operace.volba(Byte.parseByte(sc.nextLine());

System.out.print(operace.vysledek());

}

}

Kalkulačka #1 - operace/výpočet

package kalkulator;

public class operace {

private double prvniCislo;

private double druheCislo;

private byte volba;

public void setPrvniCislo(double prvniCislo) {

this.prvniCislo = prvniCislo;

}

public void setDruheCislo(double druheCislo) {

this.druheCislo = druheCislo;

}

public void volba(byte volba) {

this.volba = volba;

}

public String vysledek() {

switch(volba) {

case 1:

return "Vysledek: " + String.valueOf(prvniCislo + druheCislo);

case 2:

return "Vysledek: " + String.valueOf(prvniCislo - druheCislo);

case 3:

return "Vysledek: " + String.valueOf(prvniCislo * druheCislo);

case 4:

if(druheCislo != 0) {

return "Vysledek: " + String.valueOf(prvniCislo / druheCislo);

}

return "Nulou nelze dělit!";

default:

return "Špatný výběr operace!";

}

}

}

Kalkulačka #2 - main

package kalkulator;

import java.util.Scanner;

public class MainClass {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

Operace operace = new Operace();

double prvnicislo;

double druhecislo;

int volba;

String pokracovat;

do {

System.out.print("Zadej 1. číslo:");

prvnicislo = Double.parseDouble(sc.nextLine());

System.out.print("Zadej 2. číslo:");

druhecislo = Double.parseDouble(sc.nextLine());

System.out.print("Volba: :");

volba = Integer.parseInt(sc.nextLine());

System.out.println(operace.vypocet(prvnicislo, druhecislo, volba));

System.out.print("Znovu?: ");

pokracovat = sc.nextLine();

}

while(pokracovat.equals("ano"));

}

}

Kalkulačka #2 - Operace/výpočet

package kalkulator;

public class Operace {

public String vypocet(double a, double b, int volba) {

if (b == 0 && volba == 4) {

return String.format("Nulou nelze dělit!");

} else {

switch (volba) {

case 1:

return String.format("%f", a + b);

case 2:

return String.format("%f", a - b);

case 3:

return String.format("%f", a * b);

case 4:

return String.format("%f", a / b);

default:

return String.format("%s", "Špatná volba!");

}

}

}

}

Děkuji

 

 

1 odpověď na otázku
Řazeno dle hodnocení

 

 

anon65534

0x

Já teda nejsem expert a uznávám že rada "na to přijdeš později" je celkem k ničemu ale ono hodně záleží na situaci.

Prostě, celkově pro takovou kalkulačku tady, je vytváření třídy celkem overkill a zbytečné. Ale 2jka je za mě určitě lepší protože s těma číslama pak už nic neděláš a je tedy stupidní je mít vevnitř jako properties (už nevím jak je to česky). Zas na druhou stranu dělat objekt ze kterého musíš vytvářet instanci jenom kvůli jedné metodě taky není zrovna geniální tah (ale pro cvičení dejme tomu)

Hlavně hrozně moc záleží na tom co má program dělat a jak. A co tam budeme chtít mít v budoucnu. Celkově je potřeba plánovat (což uznávám je těžší bez zkušeností)

Jinak jen tak mimochodem, dávej si bacha na velká písmena na začátku u názvu tříd jinak tě budou všichni nenávidět. A taky nepoužívej byte pokud nemusíš protože zas tolik paměti to nešetří, musíš je neustále (castovat) když je předáváš a navíc se stejně převádí interně na int pokud s nima děláš matematické operace. Byte se nejčastěji používá hlavně na buffery při práci se soubory a sítí nebo bitovými maskami.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]