diff --git a/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/Controller.java b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/Controller.java new file mode 100644 index 0000000..1a48a3f --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/Controller.java @@ -0,0 +1,63 @@ +package GUIAnwendungen.Meine_GUI_Chat; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class Controller { + + private Modell user1; + private View view; + private View_Hauptfenster h1 = new View_Hauptfenster(); + private String name; + private String password; + + Controller(Modell user, View view){ + this.user1 = user; + this.view = view; + } + + public boolean logIn() { + view.getLogIn().addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) { + name = view.getNameEingabe(); + password = view.getPasswordEingabe(); + user1 = new Modell(name,password); + view.zeigeUserInfos(); + view.schließeLoginFenster(); + zeigeHauptfenster(); + } + }); + return true; + } + + + public void zeigeHauptfenster() { + h1.zeigeBegrüße(user1.getName()); + + h1.setVisible(true); + } + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Modell getUser1() { + return user1; + } + + + +} diff --git a/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/Modell.java b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/Modell.java new file mode 100644 index 0000000..d9ec80c --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/Modell.java @@ -0,0 +1,54 @@ +package GUIAnwendungen.Meine_GUI_Chat; + +public class Modell { + + private String name; + private int kontostand; + private int id; + private String password; + private static int ID = 100; + + public Modell() {} + public Modell(String name, String password) { + this.name = name; + this.kontostand = 0; + this.password = password; + this.id = ++ID; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + + + public int getKontostand() { + return kontostand; + } + public void setKontostand(int kontostand) { + this.kontostand = kontostand; + } + //set ID ist nicht erlaubt + public int getId() { + return id; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public String toString() { + return "[name=" + name + ", Kontostand=" + kontostand + ", id=" + id + ", password=" + password + "]"; + } +} + + diff --git a/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/Test.java b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/Test.java new file mode 100644 index 0000000..9f45cc4 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/Test.java @@ -0,0 +1,13 @@ +package GUIAnwendungen.Meine_GUI_Chat; + +public class Test { + + public static void main(String[] args) { + View user1View = new View(); + Modell user1 = new Modell(); + + Controller controller = new Controller(user1,user1View); + controller.logIn(); + } + +} diff --git a/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/View.java b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/View.java new file mode 100644 index 0000000..74aace1 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/View.java @@ -0,0 +1,70 @@ +package GUIAnwendungen.Meine_GUI_Chat; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPasswordField; +import javax.swing.JTextField; + +public class View extends JFrame { + + private JLabel title = new JLabel("Log in: "); + + private JLabel userName = new JLabel("Name: "); + private JTextField nameEingabe = new JTextField(); + private JLabel password = new JLabel("Password: "); + private JPasswordField passwordEingabe = new JPasswordField(); + private JButton logIn = new JButton("Log in"); + //(int x, int y, int width, int height) + + public View() { + this.setTitle("Log in"); + this.setVisible(true); + this.setSize(900, 650); + this.setLayout(null); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + + title.setBounds(10,20,120,20); + userName.setBounds(10,50,100,20); + nameEingabe.setBounds(140,50,140,20); + + password.setBounds(10,80,100,20); + passwordEingabe.setBounds(140,80,140,20); + logIn.setBounds(10,110,100,20); + + + this.add(title); + this.add(userName); + this.add(nameEingabe); + this.add(password); + this.add(passwordEingabe); + this.add(logIn); + + } + + public void zeigeUserInfos() { + JOptionPane.showMessageDialog(null, "Deine Log in war erfolgreich", "Log in Erfolgreich", JOptionPane.INFORMATION_MESSAGE); + } + + public String getNameEingabe() { + return nameEingabe.getText(); + } + + + public String getPasswordEingabe() { + return new String(passwordEingabe.getPassword()); + } + + public JButton getLogIn() { + return logIn; + } + + public void schließeLoginFenster() { + this.dispose(); // Schließt das aktuelle Fenster + } +} diff --git a/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/View_Hauptfenster.java b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/View_Hauptfenster.java new file mode 100644 index 0000000..875e508 --- /dev/null +++ b/Programmierung2/src/GUIAnwendungen/Meine_GUI_Chat/View_Hauptfenster.java @@ -0,0 +1,36 @@ +package GUIAnwendungen.Meine_GUI_Chat; + +import java.awt.Color; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; + +public class View_Hauptfenster extends JFrame{ + private JPanel panel = new JPanel(); + private JLabel begrüsse = new JLabel(); + + public View_Hauptfenster() { + panel.setBackground(Color.gray); + panel.setBounds(10, 10, 300, 300); + begrüsse.setBounds(10,10,100,30); + panel.add(begrüsse); + + this.setTitle("Das Hauptfenster"); + this.setVisible(false); + this.setLayout(null); + this.setSize(700, 700); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.add(panel); + + } + + public void zeigeBegrüße(String name) { + begrüsse.setText("Willkommen " + name); + } + + public static void main(String[]args) { + View_Hauptfenster test = new View_Hauptfenster(); + } + +} diff --git a/Programmierung2/src/Thread/Main.java b/Programmierung2/src/Thread/Main.java new file mode 100644 index 0000000..9545614 --- /dev/null +++ b/Programmierung2/src/Thread/Main.java @@ -0,0 +1,71 @@ +package Thread; + +import java.util.Scanner; // Scanner هنا قمنا باستدعاء الكلاس + +public class Main { + + public static void main(String[] args) { + + // و الذي سنستخدمه لإدخال بيانات من المستخدم input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس + Scanner input = new Scanner(System.in); + + // et إسمه ExamTimer هنا قمنا بإنشاء كائن من الكلاس + ExamTimer et = new ExamTimer(); + + int num1; // سنستخدم هذا المتغير لتخزين أول رقم عشوائي يظهر في عملية الجمع + int num2; // سنستخدم هذا المتغير لتخزين ثاني رقم عشوائي يظهر في عملية الجمع + int userAnswer; // سنستخدم هذا المتغير لتخزين العدد الذي سيدخله المستخدم للإجابة على عمليأت الجمع + int operationsCounter = 0; // سنخزن عدد العمليات الحسابية التي ستظهر عند تشغيل البرنامج فيه + int correctAnswersCounter = 0; // سنخزن عدد الإجابات الصحيحة في هذا المتغير + int wrongAnswersCounter = 0; // سنخزن عدد الإجابات الخطئ من ي هذا المتغير + + // الأمر الذي سيجعله في حالة إنتظار مدة 20 ثانية فقط و بعدها سيتوقف كلياً et هنا قمنا بتشغيل الكائن + et.start(); + + System.out.println("---------- Quiz ---------"); + + // طالما أن مدة العشرين ثانية لم تنقضي بعد سيستمر في تنفيذ الأوامر الموجودة في هذه الحلقة + while(et.isAlive()) + { + num1 = (int)(Math.random()*10); // num1 سيتم تخزين رقم عشوائي بين 1 و 9 في المتغير + num2 = (int)(Math.random()*10); // num2 سيتم تخزين رقم عشوائي بين 1 و 9 في المتغير + + System.out.print(num1+" + "+num2+" = "); // num2 و num1 هنا سيطلب من المستخدم معرفة ناتج جمع العددين + userAnswer = input.nextInt(); // هنا سيتم إنتظار المستخدم لإدخال الجواب + + if(userAnswer == num1+num2) // إذا كانت إجابته صحيحة, سيتم إضافة عدد الإجابات الصحيحة واحداً + correctAnswersCounter++; + + else // إذا كانت إجابته خاطئة, سيتم إضافة عدد الإجابات الخطأ واحداً + wrongAnswersCounter++; + + operationsCounter++; // في الأخير سيتم إضافة عدد عمليات الجمع واحداً + } + + System.out.println("Time end..\n"); + + // بعد إنتهاء مدة العشرين ثانية سيتم طباعة عدد عمليات الجمع, عدد الأجوبة الصحيحة و عدد الأجوبة الخاطئة + System.out.println("--------- Result --------"); + System.out.println("Number of operations: " +operationsCounter); + System.out.println("Number of correct answers: " +correctAnswersCounter); + System.out.println("Number of wrong answers: " +wrongAnswersCounter); + + } + +} + +class ExamTimer extends Thread { + + @Override + public void run() { + // لثانية واحدة Thread بعدها سيتم إيقاف كائن الـ + try { + Thread.sleep(1000); + } + catch(Exception e) { + System.out.println(e.getMessage()); + } + } + +} + diff --git a/Programmierung2/src/Thread/ThreadBeispiel.java b/Programmierung2/src/Thread/ThreadBeispiel.java index b1e11ca..cf026b8 100644 --- a/Programmierung2/src/Thread/ThreadBeispiel.java +++ b/Programmierung2/src/Thread/ThreadBeispiel.java @@ -7,6 +7,17 @@ package Thread; * Ändere die Priority nur, wenn ein Thread wichtiger ist. * - Standardmäßig hat jeder neu erstellte Thread eine Priority von 5, * um eine faire parallele Ausführung zu gewährleisten. + * + * - Unterschied zwischen den Methoden run() und start(): + * . run(): Direkter Aufruf also Das bedeutet, dass kein neuer Thread gestartet wird. + * Kein Multithreading: Da kein neuer Thread gestartet wird, findet keine parallele Ausführung statt. + * + * .start(): Neuen Thread starten: Der Aufruf der start()-Methode bewirkt, dass ein neuer Thread erzeugt wird, + * und der Code innerhalb der run()-Methode wird in diesem neuen Thread ausgeführt + * .Multithreading: Die start()-Methode führt tatsächlich zu Multithreading, + * weil sie den neuen Thread in den "Runnable" Zustand versetzt und schließlich die run()-Methode in diesem separaten Thread ausgeführt wird. + * + * */ public class ThreadBeispiel { @@ -18,6 +29,7 @@ public class ThreadBeispiel { }, "MeinThread"); // Starten des Threads + myThread.run(); myThread.start(); // Abrufen der eindeutigen Thread-ID und des Thread-Namens diff --git a/Programmierung2/src/Übungen/Whatsapp.java b/Programmierung2/src/Übungen/Whatsapp.java index 8d0e854..3837be8 100644 --- a/Programmierung2/src/Übungen/Whatsapp.java +++ b/Programmierung2/src/Übungen/Whatsapp.java @@ -5,6 +5,8 @@ public class Whatsapp { private String name; private String teleN; private String nachricht; + private static int ID = 100; + private int id; private ArrayList speicherContact; private ArrayList speicherNummern; private ArrayList blockContact; @@ -18,6 +20,7 @@ public class Whatsapp { speicherContact.add(this.name); this.speicherNummern = new ArrayList<>(); speicherNummern.add(teleN); + this.id = ++ID; } diff --git a/Programmierung2/src/Übungen/WhatsappTest.java b/Programmierung2/src/Übungen/WhatsappTest.java index 51a55fa..a728e1b 100644 --- a/Programmierung2/src/Übungen/WhatsappTest.java +++ b/Programmierung2/src/Übungen/WhatsappTest.java @@ -5,37 +5,7 @@ public class WhatsappTest { public static void main(String[] args) { Whatsapp obai = new Whatsapp("obai", "049321384324"); - Whatsapp omar = new Whatsapp("omar", "049321384324"); - Whatsapp abd = new Whatsapp("abd", "049321321"); - Whatsapp oula = new Whatsapp("oula", "049321321"); - - - Nachrichten messages = new Nachrichten(obai,omar); - messages.sendMessage(obai, omar, "Hallo omar"); - messages.sendMessage(omar, obai, "Hallo obai"); - messages.sendMessage(omar, obai, "was machst du?"); - messages.printsaveMessages(); - omar.blocKontakt(obai); - messages.sendMessage(omar, obai, "was machst du?"); - messages.printsaveMessages(); - -// Groups gr1 = new Groups(obai,"Almidani"); -// gr1.addMembers(omar); -// gr1.addMembers(abd); -// -// obai.addContact("abd","004848214"); -// obai.addContact("omar","004848214"); -// gr1.addAdmin(obai, omar); -// gr1.printaddmembers(obai); -// System.out.println(); -// System.out.println(); -// System.out.println(); -// gr1.printaddmembers(omar); -// gr1.sendeMessages(abd, "Hallo Omar"); -// gr1.sendeMessages(omar, "Hallo Abd"); -// -// -// gr1.printallMessages(); + System.out.println(obai.toString()); } }