[[oktatas:programozás:java|< Java]] ====== Java programozás szintjei ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2014 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== Bevezetés ===== Az alábbiakban egy olyan program megírása lenne a feladat, ahol egy háromszög kerületét és területét számítjuk ki. A területet az alapból, magasságból, és a három oldalból is számítjuk. A feladat tulajdonképpen négyszer van megoldva mindig más módon, az egyszerűbb esetektől haladva a komplexebb formák felé. A programozó természetesen nem azért ír komplexebb formákat, hogy saját életét megnehezítse. A cél az, hogy ha később bele kell javítani a kódba, az minél kisebb problémával járjon. Ha egy programot nem bontunk jól elkülöníthető részekre, akkor később amikor bele kell nyúlni, az egyes programrészek egymástól függősége beláthatatlan hibákat eredményez. Minden megoldás ugyanazt az eredményt adja. Különbség azért van köztük. ===== Lomtár program ===== class Program00 {public static void main(String[] args){ System.out.println("Háromszög terület, kerület számító program"); double a = 30;double b = 35;double c = 40; double k = a+b+c; double alap=30;double mag=35; double t1 = (alap * mag) /2; double s = (a + b + c) / 2; double terulet2 = Math.sqrt(s*(s-a)*(s-b)*(s-c)); System.out.printf("Kerulet: %.2f\n", k); System.out.printf("Terulet: %.2f\n", t1); System.out.printf("Terulet: %.2f\n", terulet2); }} ===== Szimpla program ===== class Program01 { public static void main(String[] args) { System.out.println("Háromszög terület, kerület számító program"); double a = 30; double b = 35; double c = 40; double kerulet = a + b + c; double alap = 30; double mag = 35; double terulet = (alap * mag) /2; double s = (a + b + c) / 2; double terulet2 = Math.sqrt(s*(s-a)*(s-b)*(s-c)); System.out.printf("Kerulet: %.2f\n", kerulet); System.out.printf("Terulet: %.2f\n", terulet); System.out.printf("Terulet: %.2f\n", terulet2); } } ===== Strukturált megoldás ===== class Program02 { private static double szamitKerulet(double a, double b, double c) { return a + b + c; } private static double szamitTerulet(double a, double m) { return (a * m) / 2.0; } private static double szamitTerulet2(double a, double b, double c) { double s = (a + b + c) / 2.0; return Math.sqrt(s*(s-a)*(s-b)*(s-c)); } public static void main(String[] args) { System.out.println("Háromszög terület, kerület számító program"); System.out.printf("Kerulet: %.2f\n", szamitKerulet(30, 35, 40)); System.out.printf("Terulet: %.2f\n", szamitTerulet(30, 35)); System.out.printf("Terulet: %.2f\n", szamitTerulet2(30, 35, 40)); } } ===== Objektum orientált megoldás ===== Az objektumorientáltságól persze itt nem sok mutatkozik meg, de valamiféle objektumorientált kezdeményezést láthatunk a példában. class Haromszog { public static double szamitKerulet(double a, double b, double c) { return a + b + c; } public static double szamitTerulet(double a, double m) { return (a * m) / 2.0; } public static double szamitTerulet(double a, double b, double c) { double s = (a + b + c) / 2.0; return Math.sqrt(s*(s-a)*(s-b)*(s-c)); } } class Program03 { public static void main(String[] args) { System.out.println("Háromszög terület, kerület számító program"); System.out.printf("Kerulet: %.2f\n", Haromszog.szamitKerulet(30, 35, 40)); System.out.printf("Terulet: %.2f\n", Haromszog.szamitTerulet(30, 35)); System.out.printf("Terulet: %.2f\n", Haromszog.szamitTerulet(30, 35, 40)); } } ===== GUI megoldás ===== import javax.swing.JFrame; import javax.swing.JTextField; import java.awt.FlowLayout; class Haromszog { public static Double szamitKerulet(double a, double b, double c) { return a + b + c; } public static Double szamitTerulet(double a, double m) { return (a * m) / 2.0; } public static Double szamitTerulet(double a, double b, double c) { double s = (a + b + c) / 2.0; return Math.sqrt(s*(s-a)*(s-b)*(s-c)); } } class Program04 extends JFrame { JTextField keruletMezo; JTextField terulet1Mezo; JTextField terulet2Mezo; Program04() { keruletMezo = new JTextField(10); terulet1Mezo = new JTextField(10); terulet2Mezo = new JTextField(10); keruletMezo.setText(Haromszog.szamitKerulet(30, 35, 40).toString()); terulet1Mezo.setText(Haromszog.szamitTerulet(30, 35).toString()); terulet2Mezo.setText(Haromszog.szamitTerulet(30, 35, 40).toString()); add(keruletMezo); add(terulet1Mezo); add(terulet2Mezo); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Háromszög terület, kerület számító program"); setLayout(new FlowLayout()); pack(); setVisible(true); } public static void main(String[] args) { new Program04(); } }