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:
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)
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.
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-5.10.2007: liczby naturalne w postaci binarnej (ps/pdf) 10 punktów
- 8-12.10.2007: trójkąt Pascala (ps/pdf) 12 punktów
- 15-19.10.2007: rozkład liczb naturalnych na czynniki pierwsze (ps/pdf) 16 punktów
- 22-26.10.2007 (*): kolekcja danych osobowych (ps/pdf) 20 punktów
- 29.10-9.11.2007: liczby rzymskie (ps/pdf) 12 punktów
- 12-16.11.2007: liczby arabskie (ps/pdf) 10 punktów
- 19-30.11.2007 (*): album (ps/pdf) 18 punktów
- 3-7.12.2007: życie (ps/pdf) 20 punktów
- 10-14.12.2007: kalendarz (ps/pdf) 14 punktów
- 17-21.12.2007 (*): strumień filtrujący do czytania tekstowego (ps/pdf) 10 punktów
- 7-11.01.2008: klasówka językowa (ps/pdf) 20 punktów
- 14-18.01.2008: terminarz (ps/pdf) 18 punktów
- 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
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):
- ...