Twoim zadaniem jest dokończenie implementacji aplikacji dokonującej oceny zdolności kredytowej klientów banku.
Aplikacja składa się z modelu danych (w pakiecie prog.bank.data) oraz generatora przykładowych losowych klientów (klasa ClientGenerator w pakiecie prog.bank.logic).
Model danych składa się z abstrakcyjnej klasy BankClient, która jest klasą bazową wszystkich typów klientów banku. Klienci banku dzielą się na klientów posiadających działalność gospodarczą (klasa ClientWithOwnBusiness), klientów na emeryturze (ClientWithPension) oraz klientów posiadających stałą pracę (ClientWithPermanentJob). Klasa ClientGenerator posiada metodę generateNewClient, która losowo tworzy nowego klienta banku należącego do jednej z trzech powyższych kategorii klientów. Klasa ClientStore pełni rolę bazy danych (kolekcji) klientów.
Przeanalizuj dostarczony szkielet aplikacji oraz postaraj się go zrozumieć zanim przystąpisz do zadań.
Przygotowanie:

  1. Pobierz plik prog2-popr1.zip z Portalu Edukacyjnego.
  2. Uruchom Eclipse.
  3. Kliknij File  Import .
  4. Wybierz General  Existing Project into Workspace.
  5. Zaznacz opcję Select archive file i wskaż pobrany plik.
  6. Kliknij Finish.

Zadania:

  1. W klasach ClientWithOwnBusiness, ClientWithPension, ClientWithPermanentJob uzupełnij implementację metody getRating. Metoda oblicza zdolność kredytową dla każdego z typów klientów. Zdolność wyrażona jest liczbą rzeczywistą. Każda klasa oblicza zdolność w inny sposób:
    a. W klasie ClientWithOwnBusiness metoda getRating zwraca wartość wyrażoną następującą formułą:
  • 1500.0 / averageSixMonthsIncome + 1.0
    Dodatkowo, jeżeli data rozpoczęcia działalności jest większa niż 2000 zmniejsz rating o 0.2.
    b. W klasie ClientWithPension metoda getRating zwraca wartość wyrażoną następującą formułą:
    currentPensionAmount / 5000.0
    Dodatkowo, jeżeli data urodzenia jest mniejsza niż 1930 pomnóż rating razy 0.5.
    c. W klasie ClientWithPermanentJob metoda getRating zwraca wartość wyrażoną następującą formułą:
    (averageThreeMonthsSalary - 1500.0) / 4500.0
    W przypadku, gdy sektor zatrudnienia jest równy „private” zmniejsz rating o 0.2.
  1. Uzupełnij metodę generateClients w klasie ClientStore (w pakiecie prog.bank.logic). Metoda ta powinna zawierać następujący algorytm:
    a. Utwórz obiekt klasy ClientGenerator
    b. Skonstruuj pętlę, która wykona się 100 razy, a w pętli:
    i. Wygeneruj klienta banku za pomocą metody generateNewClient z generatora utworzonego w podpunkcie a,
    ii. Wywołaj metodę getRating dla klienta utworzonego w podpunkcie i,
    iii. Jeżeli metoda getRating zwróciła wartość większą niż 0.8 dodaj takiego klienta do listy klientów. Lista została już utworzona w klasie ClientStore (zmienna o nazwie clients).
  2. Uzupełnij metodę showClients w klasie ClientStore. Metoda ta powinna wyświetlać na konsoli imię, nazwisko oraz rating wszystkich klientów znajdujących się na liście.
  3. Przetestuj aplikację uruchamiając klasę Runner.

Zestaw 2 – na ocenę dobry
Opis:
Przeczytaj opis dla zestawu 1.
Twoim zadaniem jest wykonanie aplikacji z graficznym interfejsem użytkownika, która będzie prezentowała listę klientów banku, którym można udzielić kredytu (czyli tych o odpowiedniej zdolności kredytowej - ratingu).
Zadania:

  1. Wykonaj zestaw 1.
  2. Utwórz pakiet prog.bank.gui. Wszystkie klasy, które tworzysz umieszczaj w tym pakiecie.
  3. Utwórz klasę okna i zaimplementuj w niej metodę tworzącą graficzny interfejs użytkownika wg przykładu na rys. 1.
  4. Utwórz klasę modelu tabeli (utwórz podklasę klasy DefaultTableModel) w taki sposób, aby pobierała ona dane z klasy ClientStore i prezentowała odpowiednie informacje (imię, nazwisko, typ klienta, rating) w tabeli. Skojarz tabelę z modelem tabeli.
  5. Zaimplementuj akcję, która wykona się po naciśnięciu przycisku „Display clients”. Akcja ta powinna:
    a. Wywołać metodę generateClients w obiekcie klasy ClientStore
    b. Powiadomić model tabeli o zmianie danych, co powinno spowodować wyświetlenie danych z listy klientów.
  6. Zaimplementuj metodę main, uruchamiającą aplikację.

Moglby ktos pomoc??

package prog.bank.data;

public class ClientWithOwnBusiness extends BankClient {

	private double averageSixMonthsIncome;
	private int yearOfStart;
		
	public ClientWithOwnBusiness(String firstName, String lastName, double averageSixMonthsIncome, int yearOfStart) {
		super(firstName, lastName);
		this.averageSixMonthsIncome = averageSixMonthsIncome;
		this.yearOfStart = yearOfStart;
	}
	
	public String getClientType() {
		return "business";
	}

	// TODO: zestaw 1 zad 1a
	
	
}





package prog.bank.data;

public class ClientWithPension extends BankClient  {

	private double currentPensionAmount;
	private int yearOfBirth;
		
	public ClientWithPension(String firstName, String lastName, double currentPensionAmount, int yearOfBirth) {
		super(firstName, lastName);
		this.currentPensionAmount = currentPensionAmount;
		this.yearOfBirth = yearOfBirth;
	}
		
	public String getClientType() {
		return "pension";
	}

	// TODO: zestaw 1 zad 1b
	
}




package prog.bank.data;

public class ClientWithPermanentJob extends BankClient {
	
	private double averageThreeMonthsSalary;
	private String sector;
	public ClientWithPermanentJob(String firstName, String lastName, double averageThreeMonthsSalary, String sector) {
		super(firstName, lastName);
		this.averageThreeMonthsSalary = averageThreeMonthsSalary;
		this.sector = sector;
	}
	
	public String getClientType() {
		return "job";
	}
	
	// TODO: zestaw 1 zad 1c

}
</code=java>