{"id":28154801,"url":"https://github.com/panagiotiskotsorgios/java-motor-vehicle-dealership","last_synced_at":"2025-05-15T06:15:22.083Z","repository":{"id":289483725,"uuid":"891443714","full_name":"PanagiotisKotsorgios/Java-Motor-Vehicle-Dealership","owner":"PanagiotisKotsorgios","description":"Εργασία OOP σε JAVA","archived":false,"fork":false,"pushed_at":"2024-11-24T13:40:41.000Z","size":43,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-23T14:36:35.079Z","etag":null,"topics":["ads","car","classes-and-objects","gui","java","motor-vehicles","object-oriented-programming","oops-in-java","polymorphism","swing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PanagiotisKotsorgios.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-20T10:49:06.000Z","updated_at":"2024-11-24T13:47:36.000Z","dependencies_parsed_at":"2025-04-23T14:47:06.030Z","dependency_job_id":null,"html_url":"https://github.com/PanagiotisKotsorgios/Java-Motor-Vehicle-Dealership","commit_stats":null,"previous_names":["panagiotiskotsorgios/java-motor-vehicle-dealership"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanagiotisKotsorgios%2FJava-Motor-Vehicle-Dealership","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanagiotisKotsorgios%2FJava-Motor-Vehicle-Dealership/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanagiotisKotsorgios%2FJava-Motor-Vehicle-Dealership/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PanagiotisKotsorgios%2FJava-Motor-Vehicle-Dealership/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PanagiotisKotsorgios","download_url":"https://codeload.github.com/PanagiotisKotsorgios/Java-Motor-Vehicle-Dealership/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254283211,"owners_count":22045145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ads","car","classes-and-objects","gui","java","motor-vehicles","object-oriented-programming","oops-in-java","polymorphism","swing"],"created_at":"2025-05-15T06:14:30.328Z","updated_at":"2025-05-15T06:15:22.039Z","avatar_url":"https://github.com/PanagiotisKotsorgios.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ανάλυση Εφαρμογής\n\n## Κληρονομικότητα και Ιεραρχία Κλάσεων\n\nΤο πρόγραμμα είναι σχεδιασμένο με ξεκάθαρη δομή κληρονομικότητας:\n\n### Βασική Κλάση: `Vehicle`\nΑναπαριστά ένα γενικό όχημα με χαρακτηριστικά:\n\n- **`licensePlate` (String):** Αριθμός κυκλοφορίας.\n- **`model` (String):** Μοντέλο οχήματος.\n- **`year` (int):** Έτος κατασκευής.\n\nΠαρέχει μεθόδους:\n\n- **`displayInfo()`**: Εμφανίζει τις λεπτομέρειες του οχήματος.\n- **`getType()`**: Επιστρέφει τον τύπο του οχήματος (υπερκαλύπτεται στις υποκλάσεις).\n\n---\n\n### Υποκλάσεις: `Car` και `Motorcycle`\n\n#### `Car`\n- **Κληρονομεί** από την `Vehicle`.\n- **Προσθέτει** το χαρακτηριστικό:\n  - **`doors` (int):** Αριθμός θυρών.\n- **Υπερκαλύπτει**:\n  - **`displayInfo()`** για να συμπεριλάβει τον αριθμό θυρών.\n  - **`getType()`** για να επιστρέφει `\"Car\"`.\n\n#### `Motorcycle`\n- **Κληρονομεί** από την `Vehicle`.\n- **Προσθέτει** το χαρακτηριστικό:\n  - **`hasSidecar` (boolean):** Υποδεικνύει αν υπάρχει Πλευρικό τμήμα.\n- **Υπερκαλύπτει**:\n  - **`displayInfo()`** για να συμπεριλάβει πληροφορίες για το Πλευρικό τμήμα.\n  - **`getType()`** για να επιστρέφει `\"Motorcycle\"`.\n\n---\n\n## Διαχείριση Οχημάτων στην `Main`\n\nΗ κλάση `Main` λειτουργεί ως το σημείο εκκίνησης της εφαρμογής και είναι υπεύθυνη για τη διαχείριση πληροφοριών οχημάτων και την αλληλεπίδραση με τον χρήστη.\n\nΠαρουσιάζει την **κληρονομικότητα** και τον **πολυμορφισμό** μέσω των παρακάτω λειτουργιών:\n\n### Δημιουργία Αντικειμένων `Car` και `Motorcycle`\n\nΗ μέθοδος **`preloadVehicles()`** δημιουργεί στιγμιότυπα των `Car` και `Motorcycle` με διάφορα χαρακτηριστικά:\n\n```java\n vehicles.add(new Car(\"ABC123\", \"Toyota Corolla\", 2020, 4));\n vehicles.add(new Motorcycle(\"XYZ789\", \"Harley Davidson\", 2019, false));\n vehicles.add(new Car(\"DEF456\", \"Honda Civic\", 2021, 2));\n```\n\n### Αυτά τα αντικείμενα προστίθενται στη λίστα vehicles, επιδεικνύοντας τη χρήση πολυμορφισμού, καθώς και οι δύο υποκλάσεις αποθηκεύονται σε συλλογή της κλάσης Vehicle.\n\n---\n\n\n## Εμφάνιση Πληροφοριών Οχημάτων\n\nΤο πρόγραμμα καλεί την υπερκαλυμμένη μέθοδο **`displayInfo()`** για κάθε αντικείμενο **`Vehicle`**, διασφαλίζοντας ότι εμφανίζονται οι σωστές λεπτομέρειες ειδικά για κάθε υποκατηγορία:\n\n```java\nfor (Vehicle vehicle : vehicles) {\n    addVehicleCard(vehicle); // Εμφανίζει λεπτομέρειες χρησιμοποιώντας το displayInfo()\n}\n```\n\n    Κάθε υποκλάση παρέχει τις δικές της ειδικές λεπτομέρειες:\n        Αριθμός θυρών για Car.\n        Καλάθι για Motorcycle.\n\n## Αλληλεπίδραση με τον Χρήστη μέσω Μενού\n\n    Προβολή Όλων των Οχημάτων:\n        Εμφανίζει όλα τα οχήματα χρησιμοποιώντας τη μέθοδο displayInfo().\n\n    Προσθήκη Οχήματος:\n        Επιτρέπει στους χρήστες να δημιουργήσουν νέα στιγμιότυπα Car ή Motorcycle δυναμικά.\n        Τα νέα αντικείμενα αποθηκεύονται στη λίστα vehicles.\n\n    Αναζήτηση με Βάση τον Αριθμό Κυκλοφορίας:\n        Αναζητά ένα όχημα βάσει του licensePlate και εμφανίζει τις πληροφορίες του χρησιμοποιώντας τη μέθοδο displayInfo().\n\n    Φιλτράρισμα Οχημάτων με Βάση τον Τύπο:\n        Χρησιμοποιεί τη μέθοδο getType() για να φιλτράρει αντικείμενα Car και Motorcycle, επιδεικνύοντας τον πολυμορφισμό.\n\n## Ικανοποίηση Απαιτήσεων\n\n    Δημιουργία Αντικειμένων Car και Motorcycle:\n        Στιγμιότυπα και των δύο κλάσεων δημιουργούνται:\n            Στη μέθοδο preloadVehicles().\n            Δυναμικά μέσω του GUI με τη λειτουργία \"Προσθήκη Οχήματος\".\n\n    Κλήση Μεθόδων για Εμφάνιση Πληροφοριών Οχημάτων:\n        Η μέθοδος displayInfo() καλείται για κάθε αντικείμενο:\n\n        System.out.println(vehicle.displayInfo());\n\n#### Διασφαλίζεται ότι οι πληροφορίες εμφανίζονται σωστά, επιβεβαιώνοντας τη λειτουργικότητα της **`κληρονομικότητας`** και των **`υπερκαλυμμένων`** μεθόδων.\n\n\n\n## Το πρόγραμμα ικανοποιεί τις απαιτήσεις της εργασίας μέσω:\n\n- Της χρήσης κληρονομικότητας (**`Vehicle`**, **`Car`**, και **`Motorcycle`** κλάσεις).\n- Της υλοποίησης μεθόδων που επαναπροσδιορίζονται (**`displayInfo()`** και **`getType()`**).\n- Της παροχής ενός πλήρους γραφικού περιβάλλοντος για τη διαχείριση και την αλληλεπίδραση με πληροφορίες οχημάτων δυναμικά.\n- Της σωστής εμφάνισης δεδομένων για κάθε τύπο οχήματος, εξασφαλίζοντας την αποτελεσματική χρήση πολυμορφισμού\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanagiotiskotsorgios%2Fjava-motor-vehicle-dealership","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanagiotiskotsorgios%2Fjava-motor-vehicle-dealership","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanagiotiskotsorgios%2Fjava-motor-vehicle-dealership/lists"}