Programowanie obiektowe, semestr letni, 2019/2020
Zajęcia odbywają się w środy w godzinach 12:00-13:30, 14:00-15:30.
2020-06-10 (praca zdalna)
- ściągawki z javy:
- java streams: https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/
- czego nie było na zajęciach a warto poczytać:
- slajdy: link
- zajęcia online: link przesłany emailem
2020-06-03 (praca zdalna)
-
czytanki:
-
zadanie domowe (2pkt): program generujący zestawienie najpopularniejszych (najczęściej wspominanych) bohaterów Pana Tadeusza w rozbiciu na poszczególne księgi przesłany do 2020-06-09 23:59
- https://pl.wikipedia.org/wiki/Pan_Tadeusz#Bohaterzy
- https://github.com/denmats/imiona_polskie
- https://pl.wiktionary.org/wiki/Indeks:Polski_-_Imiona (na podstronach jest odmiana)
- http://morfeusz.sgjp.pl/download/ - narzędzia dla języka polskiego
- https://www.nltk.org/ - biblioteka do przetwarzania jęzków naturalnych (Python!)
-
slajdy: link
-
zajęcia online: link przesłany emailem
2020-05-27 (praca zdalna)
- ImmutableSetTest.java
- zadanie domowe (2pkt): rozwiązania zadania ImmutableSet, przesłane emailem do 2020-06-02 23:59
- czytanki o iteratorach:
- slajdy: link
- zajęcia online: link przesłany emailem
2020-05-20 (praca zdalna)
- laboratorium:
- testy: bstTest.java
- zadanie domowe (2 pkt), implementacja klasy BST przesłana emailem do wtorku 2020-05-26 23:59
- ćwiczenia: typy uogólnione
- slajdy: link
- zajęcia online: link przesłany emailem
- czytanki:
- https://docs.oracle.com/javase/tutorial/java/generics/types.html
- https://www.baeldung.com/java-generics
- https://medium.com/@darrenwedgwood/java-generics-explained-c18a929fcd68
- https://www.tothenew.com/blog/why-is-generic-array-creation-not-allowed-in-java/
- http://jlinalg.sourceforge.net/ - przykład implementacji Wektorów z algebry liniowej
2020-05-13 (praca zdalna)
- laboratorium:
- testy: ONPTest.java
- zadanie domowe (2pkt), implementacja klasy ONP przesłane emailem do wtorku 2020-05-19 23:59
- dodatkowe materiały: wyjątki cz. 1 i wyjątki cz. 2
- ćwiczenia: zadanie Szachy
- treść zadania link
- slajdy do zajęć: link
2020-05-06 (praca zdalna)
- laboratorium:
- zadanieGrafoweTest.java
- treść zadania Biura (OI XIV)
- omówienie rozwiązań zadań z XIV OI
- zadanie domowe (3pkt za rozwiązanie liniowe, 2pkt za kwadratowe): rozwiązania zadania grafowego, przesłane emailem do 2020-05-12 23:59
- ćwiczenia:
- slajdy:
- czytanki:
2020-04-29 (praca zdalna)
- laboratorium:
- testy: NapisyTest.java
- https://en.wikipedia.org/wiki/Dynamic_array
- https://www.samouczekprogramisty.pl/interfejsy-w-jezyku-java/
- zadanie domowe (1pkt), implementacja klas NapisLst i NapisTab e-mailem do wtorku 2020-05-05 23:59
- ćwiczenia: https://pl.wikipedia.org/wiki/Blackjack
- slajdy: link
2020-04-22 (praca zdalna)
- laboratorium:
- zaimplementuj klasę Wyrażenia reprezentującą wyrażenia logiczne
- testy: WyrazeniaTest.java
- zadanie domowe (2pkt), implementacja pakietu klas dla wyrażeń logicznych (może być na podstawie rozwiązania do zadania o wyrażeniach arytmetycznych) + proste testy jednostkowe (JUnit) przesłane e-mailem do wtorku 2020-04-28 23:59
- zapoznanie się ze obsługą standardowego wejścia w Javie:
-
prosty przykład programu wczytującego ciąg liczb obliczający jego sumę
import java.util.Scanner; class io { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] tab = new int[n]; for(int i=0;i<n;i++) tab[i] = sc.nextInt(); int suma = 0; for(int i=0;i<n;i++) suma += tab[i]; System.out.println(suma); } }
-
klasa Scanner: https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html
-
https://javastart.pl/baza-wiedzy/java-podstawy-jezyka/podstawowe-wejscie-wyjscie
-
-
- zadanie zaliczeniowe:
- zaimplementuj klasę Wyrażenia reprezentującą wyrażenia logiczne
- ćwiczenia:
- wyrażenia arytmetyczne ciąg dalszy - upraszczanie wyrażeń, wypisywanie
- kod do wideokonferencji o godzinie 14:00 na google meet prześlę e-mailem
- slajdy do ćwiczeń link
- kolokwium odbędzie się w najbliższy piątek 2020-04-24
2020-04-15 (praca zdalna)
- laboratorium:
- zaprojektuj i zaimplementuj klasę Wielomian
- jak zaimplementować funkcję ze zmienną liczbą argumentów
- Schemat Hornera - Wikipedia
- Metoda równego podziału - Wikipedia
- Własności pierwiastków wielomianów
- Metoda Newtona (ale nie trzeba tego implementować!)
- testy: WielomianTest.java
- przydatna klasa ArrayList
- przykład użycia i porównanie z tablicami arraylist.java
- kolekcje w Javie
- zadanie domowe: rozwiązanie zadania składające się z dwóch elementów klasa Wielomian (1pkt) oraz zmodyfikowane i uzupełnione testy WielomianTest (1pkt) przesłane emailem do 2020-04-21 23:59, kod musi przechodzić wszystkie testy z ewentualnym pominięciem test_miejsca_zerowe
- ćwiczenia:
2020-04-01 (praca zdalna)
- laboratorium:
- Zaprojektuj klasę Ułamek. Jaka powinna być wewnętrzna reprezentacja? Jakie operacje powinna udostępniać klasę? Czy potrzebne są jakieś funkcje pomocnicze?
- testy: UlamekTest.java
- zadanie domowe (1pkt): rozwiązanie zadania Ulamek przesłane emailem do 2020-04-07 23:59
- ćwiczenia:
- Jak powinna wyglądać klasa reprezentująca liczby zespolone? Jakie atrybuty, jakie metody?
- Zdefiniuj klasę Pracownik i Firma. Jakie metody powinny zawierać obie klasy, jak rozdzielić pomiędzy nie odpowiedzialność?
- czytaniki:
2020-03-25 (praca zdalna)
- ćwiczenia: ważniak, wstęp do javy
- laboratorium: proszę o rozwiązanie następujących zadań:
- lab04_test.java
- zadanie domowe (1pkt): kod źródłowy klasy Lab04 przesłane emailem do 2020-03-31 23:59
- zadania dodatkowe (nieobowiązkowe):
- napisz funkcję, która wyznacza przecięcie dwóch posortowanych tablic
- napisz funkcję, która dla zadanej macierzy ZNA[i][j] znajduje znakomitość (lub stwierdza, że jej nie ma) - Osobę nazywamy znakomitością jeśli zna wszystkich, lecz nikt (oprócz jej samej) jej nie zna.
2020-03-18 (praca zdalna)
- forum w moodlu dla grupy: https://moodle.mimuw.edu.pl/mod/forum/view.php?id=23367&group=478 - będę starał się odpowiadać na zadawane tam pytania
- proszę skonfigurować sobie środowisko lokalne tak by było możliwe uruchamianie testów jednostkowych w JUnit 4:
- proszę o rozwiązanie następujących zadań (należy napisać programy, które poprawnie przejdą wszystkie poniższe testy):
- zadanie domowe (1pkt): rozwiązanie zadania ChristmasTree przesłane emailem do 2020-03-24 23:59
2020-03-11 (praca zdalna)
- pierwszy program w Javie (Main.java):
public class Main { public static void main(String[] args){ System.out.println("Hello world"); } }
- kompilacja: javac Main.java
- uruchomienie: java Main
- IntelliJ IDEA (Community edition)
- IntelliJ IDEA 2016 Java Quick-Start Hello-World
- Running IntelliJ IDEA for the First Time
- Ważniak: PO Wstęp do Javy - ćwiczenia
2020-03-04
- laboratorium: projektowanie aplikacji do gry w Brydża
- laboratorium zadanie domowe: PDF z projektem dla zadania o gry w Brydża przesłany emailem do 2020-03-10
2020-02-26
- laboratorium: projektowanie bazy pojazdów
- laboratorium zadanie domowe, PDF z projektem dla zadania bazy pojazdów przesłany emailem do 2020-03-03
- ćwiczenia: klasa opisująca grafy
Wyniki zadań domowych
nr indeksu | 0. szybkość | 1. pojazdy | 2. brydż | 3. choinka | 4. lab04 | 5. ułamek | 6. wielomian | 7. wyrażenia | 8. napisy | 9. grafy | 10. onp | 11. bst | 12. immutable | 13. pan tadeusz | RAZEM |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
359781 | 1 | 1 | 1 | 1 | 1 | 2 | 1.5 | 2 | 10 | ||||||
385954 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 10 | ||||||
417727 | 1 | 1 | 1 | 2 | 1 | 2.5 | 2 | 10 | |||||||
417913 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 3 | 10 | ||||||
417937 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 2 | 10 | |||||
418311 | 1 | 1 | 1 | 1 | 3 | 2 | 9 | ||||||||
418333 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 2 | 2 | 10 | |||||
418395 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 1.5 | 1 | 10 | |||||
418489 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 2 | 2 | 2 | 10 | ||
418494 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 1.5 | 1 | 3 | 2 | 2 | 2 | 10 | |
418498 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 10 | ||||||
419502 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 10 | ||||||
421254 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 10 | |||||||
421537 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 10 | ||||||
426383 | 1 | 1 | 1 | 1 | 1 | 2 | 1.5 | 1 | 2 | 10 |