środa, 26 marca 2014

Film: Inheritance, Polymorphism, & Testing

Polecam ciekawy wykład o programowaniu bez if-ów, między innymi na przykładzie wyrażeń.

Tydzień 6: dziedziczenie

Ćwiczenia

Chcemy zdefiniować klasę obiektów reprezentujących wyrażenia arytmetyczne jednej zmiennej rzeczywistej (x). Interesują nas następujące operacje:

  • policzenie wartości w zadanym punkcie,
  • policzenie (symboliczne) pochodnej,
  • policzenie (numeryczne) całki oznaczonej,
  • wypisywanie.
Wyrażenia mogą zawierać:
  • stałe liczbowe,
  • wystąpienia zmiennej x,
  • operatory arytmetyczne (dwuargumentowe): +, -, *, /, ...
  • funkcje jednoargumentowe: sin, cos, lg, ...
  • nawiasy okrągłe.

Laboratorium

Zaprojektuj hierarchię klas opisujących pojazdy komunikacji miejskiej. Wyraź w tej hierarchii nastepujące fakty:
  • wszystkie pojazdy komunikacji miejskiej (k. m.) są pojazdami,
  • komunikacja miejska używa tramwajów i autobusów,
  • pojazdy są garażowane w zajezdniach,
  • każdy pojazd zna swoją szybkość maksymalną,
  • każdy pojazd k. m. zna swój numer,
  • każdy pojazd k. m. zna swoją zajezdnieę,
  • każdy tramwaj jest zestawem 1 do 3 wagonów (i wie, z ilu wagonów się składa),
  • każdy autobus wie, ile zużył paliwa w bieżącym miesiącu,
  • każda zajezdnia zna swoja nazwę,
  • każda zajezdnia wie, jakie pojazdy do niej należą,
  • każda zajezdnia ma nazwę.
Każdy pojazd musi umieć podać swój opis w postaci napisu. Opis ma zawierać wszystkie informacje, które zna dany pojazd (np. numer, czy szybkość maksymalną). Opis zajezdni to nazwa zajezdni i opisy poszczególnych pojazdów.

Praca domowa nr 6

Zadanie o tramwajach. Termin oddania: 9 kwietnia 2014 r.

środa, 19 marca 2014

Tydzień 5: klasy

Ćwiczenia

Zaimplementuj liczby całkowite dowolnego rozmiaru. Operacje do zaimplementowania: dodawanie, odejmowanie, mnożenie przez liczbę typu int, tworzenie.

Laboratorium

Zaimplementuj klasę Wielomian. Wielomian powinien mieć:
  • konstruktor bezargumentowy tworzący wielomian zerowy;
  • konstruktor tworzący jednomian;
  • konstruktor tworzący wielomian na podstawie tablicy współczynników; nie marnujemy pamięci – trzymamy tablice długości stopień wielomianu + 1;
  • metodę liczącą wartość wielomianu w punkcie;
  • metody dodaj(Wielomian) i odejmij(Wielomian) zwracającą nowy wielomian będący sumą (różnicą) pierwszego i drugiego argumentu;
  • (dla chętnych) metodę pomnóż(Wielomian) zwracającą iloczyn pierwszego i drugiego argumentu.
W nowym pakiecie utwórz klasę Program korzystającą z Wielomianu. Program bierze jako argumenty wiersza poleceń listę współczynników pierwszego wielomianu, nastepnie symbol działania, a potem listę współczynników drugiego wielomianu. Program wypisuje podanego wynik działania na standardowe wyjście. Np.
java main.Program 1 0 1 + 1 1 -1 1
daje w wyniku
2+x^1+x^3

Praca domowa nr 5

Zadanie o wielomianie. Termin oddania: 26 marca 2014 r.

środa, 12 marca 2014

Tydzień 4: proste klasy

Ćwiczenia

  1. Zdefiniuj klasę Pracownik (podobnie do klasy osoba z wykładu, dodając jeszcze tekstową informację o zajmowanym przez pracownika stanowisku). Następnie zdefiniuj klasę Firma, która by przechowywała w tablicy spis wszystkich pracowników (możesz założyć, że liczba pracowników nie przekracza 100). Zdefiniuj metody dodawania nowych pracowników do firmy oraz wypisywania aktualnego spisu pracowników. Zastanów się, jak przy tym ostatnim zadaniu rozdzielić odpowiedzialności pomiędzy obie klasy.
  2. Zdefiniuj klasę opisującą datę. Zastanów się nad wyborem wewnętrznej reprezentacji dat. Zdefiniuj metody pozwalające na odczytywanie bieżącej daty i przestawianie jej o jeden tydzień w przód i w tył. Zadbaj o dobranie odpowiednich modyfikatorów dostępu do składowych.
  3. Zdefiniuj klasę Liczba, która przechowuje w tablicy cyfry liczby dziesiętnej. Zdefiniuj operacje wypisywania liczby, nadawania jej wartości (w postaci parametru konstruktora będącego napisem) oraz mnożenia przez liczbę typu int. W przypadku gdy w czasie mnożenia okaże się, że tablica jest za mała, procedura mnożąca powinna kopiować jej zawartość do większej. Zdefiniuj wreszcie metodę silnia, która policzy silnię zadanej jako parametr liczby typu int.

 Laboratorium

Na forum Szybkość programów w Javie w moodle'u należy umieścić wynik porównania programu napisanego w Javie oraz w innym języku programowania. Termin oddania: 26 marca 2014 r. To zadanie warte jest jeden punkt.
  1. Skompiluj i uruchom w Eclipse program HelloWorld z poprzednich zajęć. Podepnij w Eclipse źródła Javy.
  2. Napisz klasę Osoba. Każda osoba ma imię, nazwisko oraz płeć. W innej klasie napisz program, który wczytuje listę 10 osób, a następnie wypisuje ich dane w odwrotnej kolejności. Skompiluj i uruchom program a) pod Eclipse b) z linii komend.
  3. Zmień klasę Osoba z poprzedniego zadania tak, aby każda osoba miała matkę i ojca. Stwórz kilka osób i powiązań pomiędzy nimi. Dodaj metodę, która zwraca imię i nazwisko ojca lub napis „Nieznany”, jeśli referencja do ojca jest nullem. Dodaj metodę, która przyjmuje parametr typu Osoba i zwraca informacje, czy podane osoby mają tę sama matkę.
  4. Utwórz klasę Ulamek reprezentującą ułamek zwykły. Klasa ma udostępniać operacje dodawania, odejmowania, mnożenia, dzielenia oraz wypisywania ułamków (metoda toString()). Ułamki powinny być przechowywane w postaci uproszczonej (zadbaj o to w konstruktorze). W innej klasie napisz program, który wczyta 10 ułamków ze standardowego wejścia, a następnie policzy ich sumę oraz iloczyn. Skompiluj i uruchom program a) pod Eclipse b) z linii komend.

Praca domowa nr 3

Do wyboru zadanie 2+3 lub zadanie 4.  Termin oddania: 19 marca 2014 r.

środa, 5 marca 2014

Tydzień 3: modelowanie obiektowe cd, wstęp do Javy

Ćwiczenia

Model dziedziny dla systemu rejestracji kurdli.

Laboratorium

  1. Skompiluj i uruchom na swoim komputerze program HelloWorld.
  2. Napisz program wypisujący na ekran wszystkie argumenty z wiersza polecenia.
  3. Napisz program wyliczający wartość największego wspólnego dzielnika dwu zadanych wartości.
  4. Napisz program wypisujący rozkład zadanej liczby naturalnej większej od zera na czynniki pierwsze.
  5. Napisz program wypisujący pierwszych n liczb Fibonacciego.
  6. Napisz program wypisujący pierwszych n liczb pierwszych. Użyj sita Eratostenesa.
Zagadka: co robi program Zagadka.java?

Praca domowa nr 2

Do wyboru jedno zadanie spośród: zadanie 3, zadanie 4, zadanie 5, zadanie 6.