Kontakt:

pokój: 339
telefon: +48 71 3757836
mail:
www: http://www.ii.uni.wroc.pl/~prz/

Konsultacje (pokój 339):

  • wtorek 11-12
  • piątek 12-13
Proszę wcześniej uzgodnić dokładny termin konsultacji drogą mailową.

podstawowy kurs Javy (semestr zimowy 2014)

Adres:

Instytut Informatyki
Uniwersytetu Wrocławskiego
ul. Joliot-Curie 15
50-383 Wrocław
OGŁOSZENIA

9 stycznia 2015 r.

Ostatnie zadanie w tym semestrze:

Opublikowałem ostatnie 11 zadanie w tym semestrze.

7 stycznia 2015 r.

Terminy zadań laboratoryjnych:

W obecnym tygodniu będzie obowiązywał nieco zmieniony harmonogram zajęć - w środę będą się odbywały zajęcia wtorkowe. Tak więc termin oddawania zadań laboratoryjnych dla grupy wtorkowej z Javy przesuwa się na następny tydzień. Dotyczy to zarówno zadania 10 jak i 11.

24 października 2014 r.

Przeniesiony wykład:

W przyszłym tygodniu będzie obowiązywał nieco zmieniony harmonogram zajęć - piątek będzie dniem wolnym od zajęć a w czwartek będą się odbywały zajęcia piątkowe. Tak więc kolejny wykład z Javy wypadałby w czwartek. Pragnę jednak poinformować, że wykład w tym dniu się nie odbędzie - zostanie on przeniesiony na koniec semestu.

2 października 2014 r.

Pierwsze laboratorium:

Pierwsze laboratoria odbędą się dopiero w przyszłym tygodniu 8-10 października.

1 października 2014 r.

Punkt informacyjny:

W tym miejscu będą się pojawiać ważne ogłoszenia dotyczące organizacji zajęć związanych z tym przedmiotem. Proszę sprawdzać ogłosznia, szczególnie dzień przed wykładem i przed laboratoriami.

Java to współczesny obiektowy język programowania stworzony przez Jamesa Goslinga z firmy Sun Microsystems. Od momentu powstania w połowie lat 90-tych XX wieku przeżył on dynamiczny rozwój a zainteresowanie nim stale rośnie. Język Java przyciągnął do dziś prawie 7 milionów programistów. Znajduje zastosowanie w każdej ważniejszej gałęzi przemysłu informatycznego i jest obecny w różnego rodzaju urządzeniach, komputerach i sieciach. Popularność Javy wynika przede wszystkim z przenośności programów i niezależności od konkretnej platwormy sprzętowej, a co za tym idzie, ma zastosowanie w Internecie oraz ogólnie w aplikacjach sieciowych. Jego podstawowe koncepcje zostały przejęte z języka Smalltalk (maszyna wirtualna, odśmiecanie pamięci) oraz z języka C++ (znaczna część składni i słów kluczowych).

Celem tych zajęć jest nauka programowania w języku Java oraz zapoznanie z podstawowymi technologiami Javy.

Wymagane przygotowanie

  • Umiejętność programowania w języku C/C++ (podstawowe konstrukcje językowe i obiekty na elementarnym poziomie).
  • Znajomość podstawowych struktur danych (tablice, listy, drzewa, grafy).

Literatura

Literatura papierowa polskojęzyczna:

  • Ken Arnold, James Gosling: Java. WNT, Warszawa 1999.
  • Krzysztof Barteczko: Java. Od podstaw do technologii. Tom 1 i 2. Wydawnictwo MIKOM, Warszawa 2004.
  • Herbert Schildt: Java. Kompendium programisty. Wydawnictwo HELION, Gliwice 2005.
  • Bruce Eckel: Thinking in Java. Wydanie 4. Edycja polska. Wydawnictwo HELION, Gliwice 2006.
  • Cay S. Horstmann, Gary Cornell: Java. Podstawy. Wydanie 8. Wydawnictwo HELION, Gliwice 2008.
  • Cay S. Horstmann, Gary Cornell: Java. Techniki zaawansowane. Wydanie 8. Wydawnictwo HELION, Gliwice 2009.

Literatura papierowa anglojęzyczna:

  • Ken Arnold, James Gosling, David Holmes: The Java Programming Language. Fourth Edition. Prentice Hall PTR, 2005.
  • Kathy Sierra, Bert Bates: Head First. Java. Second Edition. O'Reilly Media, Inc., 2005.
  • Joshua Bloh: Effective Java. Second Edition. Sun Microsystems, Inc., 2008.
  • Pat Niemeyer, Jonathan Knudsen: Learning Java. Third Edition. O'Reilly Media, Inc., 2005.
  • James Gosling, Bill Joy, Guy Steele, Gilad Bracha: The Java Language Specification. Third Edition. Prentice Hall PTR, 2005.
  • Tim Lindholm, Frank Yellin: The Java Virtual Machine Specification. Second Edition. Prentice Hall PTR, 1999.

Literatura elektroniczna anglojęzyczna:

Terminarz

  • wykład: piątek 8-10 s.25 (Paweł Rzechonek)
  • laboratoria:
    środa 12-14 s.107 (Marek Szykuła)
    czwartek 8-10 s.137 (Paweł Rzechonek)
    piątek 10-12 s.7 (Paweł Rzechonek)

Laboratorium

Zasady zaliczenia przedmiotu

Ogólnie:
W semestrze będzie opublikowanych (na tej stronie) kilkanaście prostych zadań do zaprogramowania. Za każde poprawnie zaprogramowane zadanie i oddane w terminie można będzie dostać do 10 punktów (chociaż zadania będą różnej trudności).
Terminy:
Zadania do zaprogramowania będą ogłaszane w tygodniu poprzedzającym termin ich realizacji. Zadania należy oddawać w wyznaczonym terminie. Spóźnienia nie będą tolerowane, za wyjątkiem uzasadnionych sytuacji życiowych: choroba potwierdzona zwolnieniem lekarskim, wezwanie do Sądu, itp.
Prezentacje:
Programy należy prezentować osobiście w czasie pracowni (proszę nie wysyłać programów pocztą elektroniczną, ani nie przekazywać ich poprzez kolegów czy koleżanki). W trakcie prezentacji programu trzeba się liczyć z pytamiami dotyczącymi zadania: metoda rozwiązania, zastosowane konstrukcje językowe, wykorzystane technologie, itp.
Oceny:
Aby zaliczyć laboratorium na ocenę dostateczną trzeba do końca semestru zdobyć 50% z wszystkich możliwych do uzyskania punktów; na ocenę bardzo dobrą trzeba będzie zgromadzić 90% punktów; oceny pośrednie pozostją w liniowej zależności od przedstawionych wymagań granicznych.

Lista zadań laboratoryjnych

  1. 8-10 października 2014: liczby całkowite w postaci słownej (pdf)
  2. 15-17 października 2014: wzór dwumianowy Newtona (pdf)
  3. 22-24 października 2014: drzewa wyrażeń (pdf)
  4. 5-7 listopada 2014: drzewa binarnych poszukiwań (pdf)
  5. 19-21 listopada 2014: kalkulator ONP (pdf)
  6. 26-28 listopada 2014: kalkulator okienkowy (pdf)
  7. 3-5 grudnia 2014: gra "samotnik" (pdf)
  8. 10-12 grudnia 2014: kalendarz (pdf)
  9. 17-19 grudnia 2014: lista cykliczna (pdf)
  10. 8-14 stycznia 2015: Mikołaj i dzieciaki (pdf)
  11. 15-21 stycznia 2015: strumienie czyszczące (pdf)
  12.  

  13. 28-30 stycznia 2015: grafy (pdf) - zadanie dodatkowe

Ranking

Wykład

Materiał omawiany na wykładach

Spis wykładów:

1: podstawy języka Java 2: klasy i obiekty 3: dziedziczenie i polimorfizm
4: interfejsy, klasy wewnętrzne 5: wyjątki, asercje 6: AWT, grafika, zdarzenia
7: Swing - komponenty GUI 8: Swing - architektura okien 9: programowanie generyczne
10: programowanie współbieżne 11: strumienie 12: kolekcje, wyliczenia
13: refleksja, JavaBeans 14: ... 15: ...
3 października 2014 r: podstawy języka Java

Koncepcja Javy:

  • historia Javy;
  • wirtualna maszyna Javy;
  • podstawowe cechy Javy (podobieństwo składniowe do C++, obiektowość, kontrola typów, odśmiecanie, współbieżność);
  • biblioteki standardowe Javy i ich dokumentacja;
  • technologie Javy;
  • środowisko programistyczne NetBeans.

Składnia języka Java:

  • pierwszy program w Javie;
  • kompilowanie programów - javac;
  • uruchamianie programów - java;
  • literały, zmienne, operatory, wyrażenia, instrukcje sterujące, komentarze;
  • typy pierwotne i referencyjne;
  • tworzenie obiektów (operator new) i ich usuwanie (garbage-collector);
  • klasy opakowujące dla typów pierwotnych;
  • napisy (klasa String) i konkatenacja napisów;
  • tablice, tablice wielowymiarowe;
  • przeglądanie tablic za pomocą pętli for-each;
  • standardowe wejście/wyjście;
  • parametry wywołania programu.
Przykładowe programy:
PierwszyProgram.java
ArgumentyProgramu.java
PolskieZnakiISO88592.java
NapisDoLiczby.java
TrojkatnaTablica.java
10 października 2014 r: klasy i obiekty

Klasy i obiekty:

  • klasa jako nowy typ danych;
  • definicjowanie włanych klas;
  • składowe klasy: pola i metody;
  • referencja this;
  • pola definiują stan obiektu;
  • inicjalizacja pól instancyjnych, instancyjny blok inicjalizacyjny;
  • konstruktory, konstruktor domyślny;
  • wywołanie konstruktora wewnątrz innego konstruktora (konstrukcja this);
  • metody definiują funkcjonalność obiektu;
  • przekazywanie argumentów do metod;
  • metody ze zmienną liczbą argumentów;
  • przeciążanie nazw konstruktorów i metod;
  • pola finalne (deklarator final) i ich inicjalizacja;
  • składowe statyczne (deklarator static);
  • inicjalizacja pól statycznych, statyczny blok inicjalizacyjny;
  • ograniczenia metod staycznych;
  • odzyskiwanie pamięci przez garbage-collector, metoda finalize();
  • ukrywanie implementacji i kontrola dostępu do składowych (deklaratory public, private, protected oraz widoczność pakietowa).
Przykładowy program:
Punkt2D.java
17 października 2014 r: dziedziczenie i polimorfizm

Dziedziczenie:

  • kompozycja i dziedziczenie;
  • deklaracja dziedziczenia;
  • dziedziczenie jednobazowe (dziedziczenie po klasie Object);
  • klasa Object i jej metody toString() oraz equals(Object);
  • hierarchia dziedziczenia w postaci drzewa;
  • inicjalizacja obiektu i konstruktory w klasie pochodnej;
  • inicjalizacja części odziedziczonej (konstrukcja super);
  • dodawanie nowych pól i metod;
  • przesłanianie pól;
  • nadpisywanie metod;
  • upublicznianie składowych;
  • odwołania do składowych z nadklasy (konstrukcja super).

Polimorfizm:

  • rzutowanie i operator instanceof;
  • referencja do obiektu danej klasy może wskazywać na obiekt dowolnej klasy pochodnej;
  • polimorficzne wywoływanie metod;
  • klasy i metody ostateczne/finalne (modyfikator final);
  • klasy i metody abstrakcyjne (modyfikator abstract).

Pakiety:

  • definiowanie własnych pakietów;
  • pakiet to struktura otwarta;
  • importowanie całych pakietów, pojedynczych klas z pakietu i składowych statycznych z wybranej klasy;
  • parametr -classpath przy kompilacji i przy uruchamianiu programów;
  • pakiety standardowe.
Przykładowe programy:
Wyrazenie.java, Operator1Arg.java, Operator2Arg.java, Liczba.java, WartBezwzgl.java, Dodaj.java, Mnoz.java, TestWyr.java
24 października 2014 r: interfejsy, klasy wewnętrzne

Interfejsy:

  • rola interfejsów w programowaniu obiektowym;
  • definiowanie interfejsów;
  • domyślne modyfikatory pól i metod w interfejsach;
  • rozszerzanie interfejsów;
  • zastosowania interfejsów;
  • adaptery;
  • interfejs Comparable i porównywanie obiektów;
  • interfejs Cloneable i klonowanie obiektów.

Klasy wewnętrzne:

  • definiowanie klas wewnętrznych;
  • dostęp do klasy zewnętrznej poprzez Klasa.this;
  • tworzenie obiektów klas wewnętrznych poprzez obiekt.new;
  • definiowanie statycznych klas zagnieżdżonych;
  • definiowanie wewnętrznych klas lokalnych.

Klasy anonimowe:

  • definiowanie klas anonimowych;
  • konstruktor domyślny w klasie anonimowej;
  • nadpisywanie metod i definiowanie odziedziczonych metod abstrakcyjnych;
  • zastosowanie klas anonimowych;
  • anonimowe klasy wewnętrzne.
Przykładowe programy:
Zbior.java, TablicaDynamiczna.java, TestKlonTab.java
Zbior.java, Lista.java, TestKlonLis.java
WewZew.java
Wyliczanka.java
7 listopada 2014 r: wyjątki, asercje

Wyjątki:

  • czym są wyjątki i jak się ich używa (podział kodu na procedury obliczeniowe i sterujące);
  • hierarchia klas wyjątków (klasa Throwable);
  • wyjątki kontrolowane i niekontrolowane (klasy Error i RuntimeException);
  • nieprzechwycone wyjątki;
  • zgłaszanie wyjątków - instrukcja throw;
  • klauzula throws i jej postać w przypadku nadpisywania;
  • wychwytywanie wyjątków - instrukcja try-catch;
  • klauzula finally i jej wykonanie;
  • deklarowanie własnych klas wyjątków;
  • kolejkowanie wyjątków.

Asercje:

  • czym są asercje i jak się ich używa (niezmienniki w programie);
  • instrukcja assert;
  • sterowanie programem za pomocą asercji (wyjątek AssertionError);
  • włączanie i wyłączanie asercji (domyślnie asercje są wyłączone).

Komentarze dokumentacyjne:

  • umieszczanie komentarzy dokumentacyjnych w programie;
  • tagi w komentarzach dokumentacyjnych;
  • generowanie dokumentacji - javadoc.
Przykładowy program:
Zgadywanka.java
21 listopada 2014 r: AWT, grafika, zdarzenia

Komponenty AWT:

  • hierarchia klas komponentów AWT;
  • komponenty proste i kontenery;
  • okna Frame i ich właściwości;
  • okna dialogowe Dialog i modalność;
  • menadżery rozkładu komponentów w kontenerach.

Grafika:

  • obiekt Canvas jako płaszczyzna do rysowania;
  • robot graficzny Graphics;
  • kolory (klasa Color);
  • czcionki (klasa Font);
  • kreślenie napisów i prostych figur.

Obsługa zdarzeń:

  • model obsługi zdarzeń oparty na delegatach;
  • klasy zdarzeń;
  • źródła zdarzeń;
  • interfejsy do nasłuchu zdarzeń;
  • definiowanie delegatów do odbioru zdarzeń;
  • adaptery zdarzeń.
Materiały pomocnicze:
AWT Tutorial (www.tutorialspoint.com)
Przykładowe programy:
TestFrame1.java
TestFrame2.java
TestFrame3.java
TestPanel.java
TestLayoutFlowLayout.java
TestLayoutBorderLayout.java
TestLayoutGridLayout.java
TestLayoutNull.java
TestCanvas.java
TestActionEvent.java
TestAdjustmentEvent.java
28 listopada 2014 r: Swing - komponenty GUI

Architektura komponentów GUI w Swingu:

  • hierarchia klas komponentów Swing;
  • komponenty lekkie i ciężkie w Swingu;
  • komponenty wewnętrzne (lekkie);
  • okna (komponenty ciężkie);
  • własne komponenty.

Podstawowe komponenty Swing:

  • przegląd podstawowych komponentów GUI w Swingu;
  • szablon aplikacji w Swingu;
  • grafika w Swingu;
  • menu, menu kontekstowe, mnemoniki, akceleratory;
  • dialogi i klasa JOptionPane.
Materiały pomocnicze:
Creating a GUI With JFC/Swing (docs.oracle.com)
5 grudnia 2014 r: Swing - architektura okien

Okna w Swingu:

  • architektura okien w Swingu;
  • warstwy i z-order;
  • okna wewnętrzne JInternalFrame;
  • wygląd komponentów sterowany obiekty z grupy LookAndFeel.

Specjalizowane komponenty Swing:

  • panel dzielony JSplitPane;
  • panel z zakładkami JTabbedPane;
  • panel przewijalny JScrollPane;
  • pasek narzędzi JToolBar.

MVC:

  • idea MVC - oddzielenie danych od ich prezentacji;
  • MVC w Swingu;
  • szczegóły MVC na przykładzie JList:
    • model danych ListModel,
    • model GUI ListSelectionModel,
    • komunikacja model-widok w AbstractListModel,
    • kreślarz w liście ListCellRenderer.
  • zaawansowane komponenty Swing:
    • lista JList;
    • drzewo JTree;
    • tabela JTable;
    • komponenty tekstowe i lista rozwijalna.
Przykładowy program:
Totolotek.java
Materiały pomocnicze:
Creating a GUI With JFC/Swing (docs.oracle.com)
12 grudnia 2014 r: programowanie generyczne

Programowanie generyczne:

  • zastosowanie programowania generycznego;
  • parametryzacja klas;
  • parametryzacja metod;
  • parametry ograniczone;
  • implementacja parametyzacji w Javie - mechanizm znoszenia;
  • typy surowe;
  • parametryzacja interfejsów;
  • parametryzacja podczas dziedziczenia;
  • parametry wieloznaczne - wildcards;
  • ograniczenia dla typów generycznych.
Materiały pomocnicze:
Generics (by Gilad Bracha) (docs.oracle.com)
Generics (updated) (docs.oracle.com)
Java Generics (tutorials.jenkov.com)
19 grudnia 2014 r: programowanie współbieżne

Wątki:

  • pojęcie procesu i wątków w procesie;
  • tworzenie wątków w javie, ich uruchamianie i kończenie;
  • przerywanie działania wątku (metoda interrupt());
  • cykl życia wątku (stany wątku);
  • pola z deklaratorem volatile;
  • synchronizacja wątków (metody i bloki synchronizowane);
  • koordynacja wątków (metody wait(), notify() i notifyAll());
  • wymuszanie pracy innych wątków (metody yield() i join());
  • wątki demony;
  • priorytety wątków.
Przykładowe programy:
Strzelanina.java
ProdKons.java
Materiały pomocnicze:
Concurrency (docs.oracle.com)
Java Concurrency / Multithreading (tutorials.jenkov.com)
9 stycznia 2015 r: strumienie

Strumienie:

  • pojęcie strumienia;
  • strumienie do czytania i pisania;
  • strumienie bajtowe i znakowe;
  • strumienie przedmiotowe (konkretne źródło i ujście danych);
  • strumienie przetwarzające i filtrujące;
  • kodowanie w strumieniach znakowych;
  • strumienie kompresujące;
  • serializacja (interfejs Serializable);
  • pliki i kataogi (klasa File);
  • archiwa javy - jar.
Przykładowe programy:
...java
Materiały pomocnicze:
Basic I/O (docs.oracle.com)
Java IO Tutorial (tutorials.jenkov.com)
16 stycznia 2015 r: kolekcje, wyliczenia

Kolekcje standardowe:

  • kolekcje standardowe i ich używanie w programowaniu;
  • stare kolekcje Vector, Properties i BitSet;
  • architektura interfejsów kolekcyjnych;
  • dynamiczne zbiory danych i interfejs Collection<T>;
  • dynamiczne zbiory asocjacyjne i interfejs Map<K,V>;
  • implementacje interfejsów kolekcyjnych;
  • iteratory i interfejs Iterator<E>;
  • przeglądanie i modyfikowanie kolekcji za pomocą iteratorów;
  • algorytmy zawarte w klasie Arrays i Collections;
  • implementacja własnej kolekcji.

Wyliczenia:

  • definiowanie prostych wyliczeń;
  • typy wyliczeniowe jako klasy dziedziczące po Enum;
  • stałe wyliczeniowe i ich nazwy;
  • import statyczny w przypadku wyliczeń;
  • porównywanie wyliczeń, typ wyliczeniowy w instrukcji if;
  • identyfikacja wyliczeń, typ wyliczeniowy w instrukcji switch;
  • metody statyczne values() i valueOf();
  • typ wyliczeniowy w pętli for;
  • wartości porządkowe stałych wyliczeniowych, metoda ordinal();
  • dodawanie pól, metod i konstruktorów w wyliczeniach.
Materiały pomocnicze:
Collections (docs.oracle.com)
Java Collections (tutorials.jenkov.com)
30 stycznia 2015 r: refleksja, JavaBeans

Refleksja:

  • typy otoczkowe i autoboxing;
  • klasa Class;
  • literały klasowe;
  • dynamiczne ładowanie klas;
  • pojęcie refleksji i jej przeznaczenie;
  • pozyskanie informacji o klasie w trakcie wykonania programu;
  • działania na składowych w obiekcie z wykorzystaniem refleksji;
  • dekompilacja programów - javap.

JavaBeans:

  • idea pracy z komponentami-ziarnami;
  • atrybuty zwyczajne (powiązane) i wetowalne (ograniczane) w ziarnach;
  • akcesory: settery i gettery;
  • kolekcje słuchaczy zdarzeń zmian atrybutów PropertyChangeSupport i VetoableChangeSupport;
  • powiadamienie o zmianie atrybutu firePropertyChange();
  • pytanie o zgodę na zmianę atrybutu fireVetoableChange();
  • interfejsy dla słuchaczy zmian atrybutów w ziarnach PropertyChangeListener i VetoableChangeListener;
  • zdarzenie zmiany atrybutu PropertyChangeEvent;
  • wetowanie zmian i wyjątek PropertyVetoException;
  • synchronizowane settery i gettery atrybutów zwyczajnych i ograniczonych.
Materiały pomocnicze:
The Reflection API (docs.oracle.com)
Java Reflection (tutorials.jenkov.com)
JavaBeans(TM) (docs.oracle.com)
JavaBeans(TM) (www-inf.int-evry.fr)
Generics (by Greg Voss) (journals.ecs.soton.ac.uk)
Przykładowy program:
TestJavaBeans.java

For english strudents

Lab rules

General:
At this site several simple programming tasks will be published. For each properly programmed task the student can score up to 10 points or up to 5 points for the task submitted within a week after the deadline.
Deadline:
The deadline for each task is nearest Wednesday after its publication (Wednesday in the next week). Delays longer than a week are not acceptable. The only exceptions are: illness confirmed by a doctor or official matters confirmed by the appropirate authorities.
Presentation of solutions:
Programs have to be presented during lab sessions, personally by the author (student). It is unacceptable to pass the solutions by colleagues. During the presentation the author should be prepared to answer questions about: the method, specific langauge constructions, technologies, etc. used in the proposed solution.
Programs:
Presented programs have to be sent to me immediately after the lab sessions. I will collect your programs to the end of semester.
Evaluation:
To receive the credit for this course, grade 3 (sufficient), the student has to collect minimum 50% of all the possible points; for grade 5 (very good) it is necessary to collect 90% of all the possible points; the rest of the intermediate grades are linearly dependent on the above border requirements.

Bibliography

Books:
  • Ken Arnold, James Gosling, David Holmes: The Java Programming Language. Fourth Edition. Prentice Hall PTR, 2005.
  • Herbert Schildt: Java: A Beginner’s Guide. Third Edition. McGraw-Hill, 2005.
  • Joshua Bloh: Effective Java. Second Edition. Sun Microsystems, 2008.
  • Bruce Eckel: Thinking in Java. Fourth Edition. MindView, 2006.
  • Pat Niemeyer, Jonathan Knudsen: Learning Java. Third Edition. O'Reilly Media, 2005.
  • Kathy Sierra, Bert Bates: Head First. Java. Second Edition. O'Reilly Media, 2005.
  • James Gosling, Bill Joy, Guy Steele, Gilad Bracha: The Java Language Specification. Third Edition. Prentice Hall PTR, 2005.
  • Tim Lindholm, Frank Yellin: The Java Virtual Machine Specification. Second Edition. Prentice Hall PTR, 1999.
Internet:

Reading course

  1. Java Language Basics
    Subjects:
    • history of Java;
    • conception of Java;
    • development environment NetBeans;
    • the first program in Java;
    • compiling - javac;
    • loading and execution - java;
    • literals, variables, operators, expressions, instructions, comments;
    • primitive types and referenced types;
    • creation new object (operator new) and removing unwanted objects (garbage-collector);
    • wrapper classes for primitive types;
    • the String class;
    • conversion from string to number;
    • arrays and multidimensional arrays;
    • standard input and output;
    • program arguments.
    References:
  2. Classes and Objects
    Subjects:
    • class as a new data type;
    • class definition;
    • class members: fields and methods;
    • reference this;
    • constructors and object initialization;
    • methods and theirs arguments;
    • overloading;
    • methods with a variable number of arguments;
    • final fields;
    • static members;
    • access controll;
    • packages.
    References:
  3. Interfaces and Inheritance
    Subjects:
    • extending classes;
    • the hierarchy of inheritance (class Object is on the top of the hierachy);
    • constructor order dependencies;
    • fields cannot be overridden - they can only be hidden;
    • overriding a method means replacing the superclass's implementation of a method with one of your own;
    • accessing inherited members;
    • nested classes;
    • abstract classes;
    • interfaces.
    References:

Exercises

  1. 29 October, 2014: the number to words converter (pdf)
  2. 26 November, 2014: polynomials (pdf)
  3. 10 December, 2014: expression trees (pdf)
  4. 17 December, 2014: the simple integer calculator (pdf)

Ranking

Instytut Informatyki