Java- pomysł na projekt z programowania obiektowego

Witam, poszukuje pomysłu na ciekawy, choć przyznam szczerze najlepiej w miarę prosty projekt konsolowy na przedmiot Programowanie obiektowe. Najlepiej żeby nie był to piekielnie trudny program oraz troszke sensowniejszy niż same uożenie klas np Zwierząt w zoo. Oto założenia do projektu:

- projekt należy napisać w 2 językach (2 osobne programy) obiektowych,
  jednym z nich musi być język Java lub C++
- należy wykorzystać min. 7 klas, w tym min. 5 ułożonych w sensowną i
  sensownie wykorzystaną hierarchię,
- należy wykorzystać techniki polimorficzne (metody wirtualne),
- należy wykorzystać dowolnego typu kolekcję (tablica, stos, zbiór,
  mapa, kolejka, lista) do przechowywania obiektów należących do
  różnych klas,
- należy wykorzystać co najmniej jedn z poniższych elementów:
  -- szablon (C++),
  -- interfejs (Java),
  -- dziedziczenie z klasy abstrakcyjnej (C++,Java),

- w co najmniejm jednym z języków należy użyć wyjątków,
- należy zastosować techniki hermetyzacji (ukrycie tych elementów,
  dla których nie ma uzasadnienia, by były upublicznione)
- program musi liczyć min. 400 linii kodu (200 w Rubym)
- należy wykorzystać (w dowolnym sensownym celu) zapis danych do pliku
  i odczyt danych z pliku,
- program musi działać poprawnie.

Napisz proste szachy (bez AI) - ruchy na przemian podawane w konsoli np. A5 -> B6

  • 7 klas będzie na pewno
  • 5 klas w sensownej hierarchii Figura(abstrakcyjna) -> pionek, wieża, etc.
  • polimorfizm (metoda move())
  • wyjatki: IllegalMoveException dla metody move()
  • kolekcja (reprezentacja szachownicy)
  • interfejs i zapis/ odczyt z pliku (serializable + możliwość cofania ruchu/zapisania gry/możliwość odtworzenia przebiegu partii?)

A jaki polecacie drugi język? (Pierwszy Java a drugi?) Ten sam projekt musi być w dwóch językach

Ten, w którym czujesz się najlepiej.

Dosyć klasycznym przykładem wałkowanym w takich przypadkach jest biblioteka. Książki, autorzy, wypożyczający, pracownicy etc.

Nie można umieścić metody move w bazowej klasie bierek, bo wykonanie ruchu zależy od pozycji innych bierek na planszy oraz od historii rozgrywki.

Wyjątki stosuje się do sytuacji wyjątkowych (np. pies zjadł Hetmana), a nie do walidacji danych od użytkownika.

 

I to jest dużo lepszy pomysł. A jak nie biblioteka, to sklep, przychodnia lekarska, albo MPK.