Projektowanie obiektowe i programowanie w Javie

Termin poprawkowy: 28.02.2014 godz. 10:00, sala 142 - zasady jak na I terminie

Termin zaliczenia w sesji: 17.02.2014 godz. 15:10, sala 142

Do 16.02.2014 proszę o podesłanie projektów na email w załączniku z nazwą imie.nazwisko.zip. Oceny będą wystawione na podstawie zakresu spełenienia specyfikacji projektów oraz rozmowy nt. projektu.


Na zajęciach omówione zostaną podstawy programowania w języku Java oraz programowania obiektowego.

Materiały ćwiczeniowe:


Wymagania ogólne do projektu (specyfikacja szczególna zostanie zamieszczona w tym tygodniu).

  1. Projekty powinny spełniać wymogi opisane w opisie wymagań
  2. Kod programu powinien być:
    1. sformatowany,
    2. zgodny z konwencjami nazewnictwa w Javie,
    3. opatrzony w komentarze JavaDoc dla wszystkich klas, metod oraz publicznych pól statycznych finalnych,
    4. zaprojektowany w sposób obiektowy, logika aplikacji powinna być oddzielona od interfejsu użytkownika,
    5. interfejs użytkownika powinien być  napisany w Swingu - ręcznie lub przy użyciu dowolnego edytora GUI
  3. Dla klas implementujących logikę powinny być  przygotowane przynajmniej dwa testy jednostkowe JUnit.
  4. Projekt powinien mieć przygotowany skrypt Ant budujący wykonywalny plik JAR oraz dokumentację JavaDoc oraz target wykonujący testy jednostkowe.
  5. (*) W dokumentacji diagram klas w UML.
     

 Wymagania szczegółowe [DOWNLOAD]


Ćwiczenia 02.12.2013

Napisz program w Javie, który zajmuje się obróbką wszystkich plików w danym katalogu (z opcją przeszukiwania podkatalogów). Rodzaj obróbki będzie definiowany przez implementację interfejsu:

public interface FileProcessor {
       void processFile(java.io.File file);
}

Katalog którego pliki mają być procesowane jest pierwszym parametrem programu. Drugim opcjonalnym parametrem może być przełącznik "-sd", który będzie powodował przeszukiwanie podfolderów. Zaimplementuj dwa procesory:

  • Zmieniający rozszerzenie jpeg na jpg
  • Zmieniający nazwy plików w formacie dd-mm-rrrr na rrrr-mm-dd

Lista implementacji procesorów obsługiwanych przez program ma się znajdować w pliku konfiguracyjnym processors.conf np.:

pl.poznan.put.cs.akozak.JpegToJpgRenamer
pl.poznan.put.cs.akozak.FileDateNameRenamer

[Rozwiązanie z opcją działania na podkatalogach]


ZAJĘCIA 16.12.2013 - ZABAWA W FIRMĘ

W korporacji bioinformatycznej do napisania jest projekt, w którym należy wykonać kilka implementacji procesora plików tekstowych.
Jedna z osób ("master committer") zarządza utrzymaniem głównej gałęzi projektu. Niech osoba ta będzie też team leaderem i rozdziela zadania do poszczególnych pracowników.

Do programu dostępnego na stronie - FileProcessor i będącego już repozytorium GIT należy:

  1. otrzymać od szefa procesor do napisania,
  2. utworzyć w GIT odpowiednią gałąź na zadanie
  3. napisać implementację procesora
  4. dla gotowego zadania zrobić commit gałęzi i push na serwer
  5. osoba wybrana jako master committer sprawdza kod (czy kod jest sformatowany prawidłowo, czy kod jest zrozumiały i zawiera komentarze i czy działa prawidłowo)

   i następnie scala z główną gałęzią projektu lub zwraca zadanie do poprawek

PROCESORY DO IMPLEMENTACJI:

1. Procesor, który zlicza linie w pliku tekstowym i zapisuje raport do pliku "LinesReport.txt" np.
-------------------------------------------
Łącznie: 270 linii w 3 plikach tekstowych:
70;c:/MojePliki/plik1.txt
150;c:/MojePliki/plik2.txt
50;c:/MojePliki/inne/plikx.txt
-------------------------------------------

2. Procesor, który zlicza liczbę słów w plikach zakodowanych w UTF-8 i zapisuje raport do pliku "WordsReport.txt" np.
-------------------------------------------
Łącznie: 15073 słów w 3 plikach tekstowych:
1300;c:/MojePliki/plik1.txt
10505;c:/MojePliki/plik2.txt
3268;c:/MojePliki/inne/plikx.txt
-------------------------------------------

3. Procesor, który wygeneruje słownik ze wszystkich słów w napotkanych plikach i zapisze w kolejności leksykograficznej do pliku "DictionaryReport.txt" np.
-------------------------------------------
Słownik z plików: c:/MojePliki/plik1.txt;c:/MojePliki/plik2.txt;c:/MojePliki/inne/plikx.txt
a
adam
adoruje
adaptery
alicja
...
-------------------------------------------

4. Procesor, który zliczy statystykę ile jest słów zaczynających się daną literą alfabetu i zapisze do pliku "FirstLetterReport.txt" np.
-------------------------------------------
Zliczenie liczby słów zaczynających się daną literą w plikach:
c:/MojePliki/plik1.txt;c:/MojePliki/plik2.txt;c:/MojePliki/inne/plikx.txt
a;150
b;30
c;25
d;180
e;120
f;80
......
-------------------------------------------

5. Procesor, który dla każdego pliku "*.txt" zapisze plik "*.nopl.txt", w którym wszystkie znaki polskie zastąpione są bezogonkowymi literami.

6. Procesor, który złączy wszystkie pliki "*.txt" do jednego pliku "FileCompilation.html" w formacie:
<html>
<head>
    <title>Zbiór treści plików</title>
</head>
<body>
    <h2>[ścieżka pliku 1]</h2>
    <div id="[ścieżka pliku 1]">[zawartość pliku 1]</div>

    <h2>[ścieżka pliku 2]</h2>
    <div id="[ścieżka pliku 2]">[zawartość pliku 2]</div>

    <h2>[ścieżka pliku 3]</h2>
    <div id="[ścieżka pliku 3]">[zawartość pliku 3]</div>

......
</body>
</html>