Java

Java to nowoczesny obiektowy język programowania. Od momentu powstania na początku lat 90'tych przeżył on dynamiczny rozwój a zainteresowanie nim stale rośnie. W obecnej chwili do samego języka programowania, rozwijanego przez firmę SUN, dołączony jest cały zestaw różnorodnych technologii, umożliwiających realizację projektów informatycznych w wielu dziedzinach. Celem tych zajęć jest zapoznanie studentów z językiem programowania Java oraz z kilkoma najważniejszymi technologiami wykorzystywanymi we współczesnym programowaniu.

wymagane przygotowanie
  • Umiejętność programowania w języku C/C++ (podstawowe konstrukcje językowe).
  • Znajomość elementarnych struktur danych (tablice, listy, drzewa).
literatura

Literatura papierowa:

  • 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.
  • James Gosling, Bill Joy, Guy Steele, Gilad Bracha: The Java Language Specification. Second edition. Addison Wesley, 2000, ISBN 0-201-31008-2.
  • Tim Lindholm, Frank Yellin: The Java Virtual Machine Specification. Second edition. Addison Wesley, 2000, ISBN 0-201-43294-3.

Literatura elektroniczna:

powrót na początek strony


Terminarz

studia dzienne
  • wykład: wtorek 14-16 s.25 (P.Rzechonek)
  • laboratorium:
    wtorek 18-20 s.137 (T.Wierzbicki)
    środa 10-12 s.108 (P.Rzechonek)
    czwartek 18-20 s.108 (T.Cichocki)
    piątek 10-12 s.108 (T.Truderung)
studia wieczorowe
  • wykład: piątek 16-17 s.104 (P.Rzechonek)
  • laboratorium:
    piątek 17-20 s.110 (P.Rzechonek)
    piątek 17-20 s.108 (T.Cichocki)

powrót na początek strony


Ogłoszenia

18.01.2008 (laboratorium - studia wieczorowe)
Za tydzień, w piątek 25.01.2008, przeprowadzenie zajęć laboratoryjnych może być poważnie utrudnione ze względu na zorganizowany w tym terminie kurs dla nauczycieli. Dlatego proponuję zajęcia uzupełniające w środę 30.01.2008 o 18:00 (zaraz po repetytorium z AiSD). Piątkowy wykład odbędzie się w normalnym terminie, czyli 25.01.2008 o 16:15.
16.01.2008 (laboratorium)
Zadanie 13 (akwarium) nie jest obowiązkowe, ale można je zaprogramować i oddać za dodatkowe punkty. Jest to zadanie dedykowane studentom, którym zabrakło niewiele punktów do zaliczenia przedmiotu (nie jest to przysłowiowa brzytwa dla tonącego - zadanie jest raczej proste, w szczególności osoby obecne na ostatnim wykładzie nie powinny mieć z nim żadnego kłopotu).
15.01.2008 (laboratorium - studia dzienne)
Zadanie 12 (terminarz) można oddawać również w następnym tygodniu (chodzi o moją grupę), czyli 23.01.2008.
14.12.2007 (laboratorium - studia wieczorowe)
Termin oddania zadania 9 (kalendarz) został przesunięty o tydzień, czyli na 21.12.2007.
7.12.2007 (laboratorium - studia wieczorowe)
Termin oddania zadania 8 (życie) został przesunięty o tydzień, czyli na 14.12.2007.
7.12.2007 (wykład- studia dzienne)
Wykład dla studentów dziennych w przyszłym tygodniu nie odbędzie się. We wtorek 11.12.2007 po południu w sali 25 rozpocznie się cykl wykładów związanych z konferencją IT Academic Day UWr 2007, poświęconą nowym technologiom w programowaniu wdrażanym przez firmę Microsoft.
21.11.2007 (laboratorium)
Przedłużam termin oddawania zadania 7 o jeden tydzień.
1.11.2007 (laboratorium)
Pierwszy ranking w moich grupach już jest zrobiony.
20.10.2007 (wykład/laboratorium - studia wieczorowe)
Został zmieniony termin zajęć na studiach wieczorowych - od następnego tygodnia wykład i laboratorium z Javy będzie w piątek.
9.10.2007 (laboratorium)
Pierwszy ranking w mojej grupie pojawi się pod koniec miesiąca.
2.10.2007 (laboratorium)
Pierwsze laboratorium odbędzie się w pierwszym tygodniu (1-5.10.2007) we wszystkich grupach.

powrót na początek strony


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ć określoną liczbę punktów (od 10 do 20).
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: 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 i 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 dobra trzba będzie zgromadzić 90% punktów; oceny pośrednie pozostją w liniowej zależności od przedstawionych wymagań granicznych.
listy zadań
  1. 1-5.10.2007: liczby naturalne w postaci binarnej (ps/pdf) 10 punktów
  2. 8-12.10.2007: trójkąt Pascala (ps/pdf) 12 punktów
  3. 15-19.10.2007: rozkład liczb naturalnych na czynniki pierwsze (ps/pdf) 16 punktów
  4. 22-26.10.2007 (*): kolekcja danych osobowych (ps/pdf) 20 punktów
  5. 29.10-9.11.2007: liczby rzymskie (ps/pdf) 12 punktów
  6. 12-16.11.2007: liczby arabskie (ps/pdf) 10 punktów
  7. 19-30.11.2007 (*): album (ps/pdf) 18 punktów
  8. 3-7.12.2007: życie (ps/pdf) 20 punktów
  9. 10-14.12.2007: kalendarz (ps/pdf) 14 punktów
  10. 17-21.12.2007 (*): strumień filtrujący do czytania tekstowego (ps/pdf) 10 punktów
  11. 7-11.01.2008: klasówka językowa (ps/pdf) 20 punktów
  12. 14-18.01.2008: terminarz (ps/pdf) 18 punktów
  13. 21-25.01.2008 (**): akwarium (ps/pdf) 15 punktów

Zadania z gwiazdką (*) nie są obowiązkowe na studiach wieczorowych.

Zadanie z dwiema gwiazdkami (**) nie jest obowiązkowe ani na studiach dziennych ani na wieczorowych.

rankingi
  • studenci dzienni: (html)
  • studenci wieczorowi: (html)

powrót na początek strony


Wykład

2.10.2007 (składnia języka):
  • rys historyczny;
  • podstawowe cechy języka programowania Java;
  • kompilowanie (program javac) i uruchamianie (program java) programów w javie;
  • typy pierwotne i referencyjne;
  • tworzenie obiektów (operator new) i ich usuwanie (garbage-collector);
  • operatory, wyrażenia i instrukcje sterujące;
  • napisy (klasa String);
  • tablice, tablice wielowymiarowe;
  • parametry wywołania programu.
9.10.2007 (klasy i obiekty):
  • standardowe wejście/wyjście;
  • definicjowanie włanych klas;
  • tworzenie obiektów za pomocą operatora new;
  • konstruktory;
  • referencja this;
  • metoda finalize;
  • deklaratory widoczności składowych (public, private, protected i widoczność pakietowa);
  • pola i ich inicjalizacja;
  • przekazywanie parametrów do metod;
  • przeciążanie nazw konstruktorów i metod;
  • składowe statyczne (deklarator static);
  • pola, metody i klasy ostateczne (deklarator final);
  • pakiety;
  • importowanie pakietów, klas i składowych statycznych;
  • dokumentowanie programu za pomocą komentarzy dokumentacyjnych (program javadoc).
16.10.2007 (dziedziczenie i polimorfizm):
  • deklaracja dziedziczenia;
  • hierarchia dziedziczenia i klasa Object;
  • metody toString() i equals(Object) w klasie Object;
  • inicjalizacja klasy bazowej w konstruktorze klasy pochodnej;
  • zastępowanie metod i przesłanianie pól;
  • upublicznianie składowych;
  • wywoływanie starych metod z nadklasy (konstrukcja super);
  • referencje do obiektów klas pochodnych i polimorficzne wywoływanie metod;
  • wywołania niepolimorficzne;
  • metody i klasy abstrakcyjne (deklarator abstract);
  • rzutowanie i operator instanceof;
  • interfejsy jako kontrakt na funkcjonalność;
  • dziedziczenie w interfejsach;
  • implementowanie interfejsu;
  • użycie interfejsu jako typu zmiennej lub parametru;
  • przykład interfejsu: Iterator<E>;
  • klonowanie obiektów (metoda clone() i interfejs Cloneable);
  • budowanie nowych klas: kompozycja i dziedziczenie.
23/26.10.2007 (wyjątki):
  • klasy wewnętrzne i zagnieżdżone;
  • klasy anonimowe;
  • zgłaszanie wyjątków - instrukcja throw;
  • wychwytywanie wyjątków - instrukcja try-catch;
  • klauzula finally;
  • hierarchia klas wyjątków;
  • wyjątki kontrolowane i niekontrolowane;
  • deklarowanie własnych wyjątków - klasa Exception.
30.10/16.11.2007 (AWT):
  • komponenty AWT;
  • delegacyjny model obsługi zdarzeń.
6/9.11.2007 (grafika i aplety):
  • niskopoziomowa grafika;
  • kolory i czcionki;
  • wyświetlanie obrazków;
  • odtwarzanie muzyki;
  • aplety.
13/16.11.2007 (Swing):
  • komponenty Swing;
  • menu;
  • pliki *.jar.
20/23.11.2007 (wątki):
  • pojęcie wątku;
  • cykl życia wątku;
  • tworzenie i uruchamianie wątków w javie;
  • zakończenie działania wątku;
  • synchronizacja wątków.
27/30.11.2007 (MVC):
  • architektura okien w Swingu;
  • model MVC - oddzielenie danych od ich prezentacji w kontrolkach Swing.
4/7/14.12.2007 (strumienie):
  • strumienie do czytania i pisania;
  • strumienie na bajtowe i znakowe;
  • strumienie przedmiotowe (źródło i ujście danych);
  • strumienie przetwarzające i filtrujące;
  • kodowanie;
  • strumienie binarne;
  • serializacja (interfejs Serializable);
  • obiekty plikowe (klasa File).
18/21.12.2007 (JDBC):
  • mechanizm działania JDBC;
  • sterowniki do baz danych;
  • nawiązywanie połączenia z bazą danych;
  • wykonywanie zapytań w języku SQL;
  • modyfikowanie bazy danych;
  • przesuwanie kursora w tabeli wynikowej za pomocą ResultSet.
  • Kursy języka zapytań do relacyjnych baz danych SQL: www.sqlcourse.com i sqlcourse2.com.
4/8/11.01.2008 (programowanie z typami):
  • asercje;
  • zmienna liczba argumentów w metodach;
  • automatyczne otaczanie i wydobywanie wartości (autoboxing);
  • mechanizm refleksji (reflection);
  • typy wyliczeniowe (enums);
  • typy sparametryzowane (generics).
15/18.01.2008 (java-beans):
  • idea pracy z komponentami-ziarnami;
  • atrybuty powiązane i ograniczone w ziarnach;
  • kolekcje słuchaczy zdarzeń zmian atrybutów powiązanych PropertyChangeSupport;
  • kolekcje słuchaczy zdarzeń zmian atrybutów ograniczonych 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;
  • wetowanie zmian i wyjątek PropertyVetoException;
  • zdarzenie zmiany atrybutu PropertyChangeEvent.
22/25.01.2008 (kolekcje):
  • ...

powrót na początek strony