Programowanie obiektowe, semestr letni, 2020/2021
Zajęcia odbywają się w środy w godzinach 8:30-9:45, 12:15-13:45, 14:15-15:45.
-
moduł Moodle z zajęciami z programowania obiektowego: link
-
laboratorium 8:30 link
-
laboratorium 12:15 link
-
ćwiczenia 14:00 link
-
nagrania za laboratorium i ćwiczeń link
2021-06-09
- laboratorium:
- ćwiczenia:
- strumienie
2021-06-02
- laboratorium:
- immutableSet
- ćwiczenia:
2021-05-26
- laboratorium:
- tablica z licznikami
- testy: bstTest.java
- zadanie domowe (2 pkt), implementacja klasy BST przesłana przez moodla do niedzieli 2020-05-30 23:59
- ćwiczenia:
2021-05-19
- laboratorium:
- wyjątki cz. 1
- wyjątki cz. 2
- https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
- 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 przez moodla do 2021-05-25 23:59
- ćwiczena:
- typy uogólnione
2021-05-12
- laboratorium:
- losowe szachy
- ćwiczenia:
- zadanie domowe (2 punkty):
- pełna implementacja szachów przesłana przez moodle do 2021-05-25 23:59
- kod startowy do zadania domowego: lab10-szachy_kod_startowy.zip
- testy: lab10_AntySzachyTest.java
2021-05-05
- czytanki:
- laboratorium:
- omówienie zadania wyrażenia logiczne
- kolekcje w Javie
- ćwiczenia:
- zadanie Choinka: link
- rozwiązanie: mikolaje.zip
2021-04-28
- laboratorium:
- implementacja symulacji rozgrywki w BlackJack https://pl.wikipedia.org/wiki/Blackjack
- zadanie domowe (1pkt):
- zaimplementuj klasę Wyrażenia reprezentującą wyrażenia logiczne (może być na podstawie rozwiązania do zadania o wyrażeniach arytmetycznych)
- testy: WyrazeniaTest.java
- wysyłanie zgłoszeń przez Moodle: link
- 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:
- ćwiczenia:
- wyrażenia arytmetyczne ciąg dalszy - upraszczanie wyrażeń, wypisywanie
2021-04-21
- laboratorium:
- testy: NapisyTest.java
- https://en.wikipedia.org/wiki/Dynamic_array
- https://www.samouczekprogramisty.pl/interfejsy-w-jezyku-java/
- https://www.javatpoint.com/difference-between-abstract-class-and-interface
- zadanie domowe: rozwiązanie zadania składające się z implementacji klas NapisTab oraz NapisLst z dodaną jedną dodatkową funkcjonalnością (np. nowa metoda) własnego pomysłu (1pkt) przesłane przez moodla link
- ćwiczenia: wyrażenia arytmetyczne
- https://ruslanspivak.com/lsbasi-part7/ - Abstract Syntax Trees
2021-04-14
- 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 przez moodla link
2021-04-12
-
laboratorium (dodatkowe):
- testy: QueueTest.java
2021-04-07
- 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
- dodatkowe zadania: ćwiczenia w Ważniaku
- zadanie domowe (1pkt): rozwiązanie zadania Ulamek przesłane przez moodla: link
- ć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:
- ==, .equals(), compareTo(), and compare()
- https://javastart.pl/baza-wiedzy/programowanie-obiektowe/metoda-hashcode
- https://javastart.pl/baza-wiedzy/programowanie-obiektowe/metoda-equals
- https://stackoverflow.com/questions/2265503/why-do-i-need-to-override-the-equals-and-hashcode-methods-in-java
- https://en.wikipedia.org/wiki/Method_chaining
- https://www.geeksforgeeks.org/method-chaining-in-java-with-examples/
2021-03-24
- 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 przez Moodle do 2020-03-27 23:59
2021-03-17
- 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
- Zadanie domowe -- implementacja funkcji isPrime poprawnie rozwiązująca testy lab03_IsPrimeTest.java termin: 2021-03-20 23:59
2021-03-10
- program DIA
- https://www.diagrams.net/
- zasady Brydża
- zadanie domowe: proszę przygotować diagram klas dla gry w Brydża (w formacie PDF, JPG lub PNG) i przesłać na adres walen (at) mimuw.edu.pl, termin: 2021-03-17 23:59
2021-03-03
- zajęcia odwołane