środa, 4 czerwca 2014

Tydzień 15: egzamin & strumienie

Ćwiczenia

Egzamin z PO  (egzamin z roku 2009/2010).

Laboratorium

  1. Napisz program, który wypisuje na ekran zawartosc pliku tekstowego. Nazwę pliku do wypisania wczytaj ze standardowego wejścia za pomocą odpowiednich strumieni.
  2. Napisz program, który dla podanego pliku wypisze, z ilu bajtów składa się ten plik.
  3. Napisz program, który dla danego pliku tekstowego wypisze liczbę znaków oraz liczbę białych znaków w tym pliku.
  4. (a) Napisz program, który kopiuje znak po znaku pliki tekstowe.
    (b) Zmień program z poprzedniego punktu tak, aby czas kopiowania był mierzony i wypisywany na konsole. Sprawdź, jaki wpływ na efektywność ma użycie buforowania.
  5. Napisz program, który odwróci zawartość pliku tekstowego w nastepujący sposób:
    (a) Odwróci kolejność wierszy.
    (b) W każdym wierszu odwróci kolejność słów.
    (c) W nazwie pliku odwróci kolejność liter, pomijając ewentualne rozszerzenie .txt.
  6. Napisz Iterator<String>, w którym metoda next() zwraca kolejne linie wczytane z Readera. Konstruktor ma dostawać obiekt Readera. Po wczytaniu wszystkiego Reader ma zostać zamknięty. Zauważ, że Iterator nie może rzucać wyjątków IOException. Niech przechwyci taki wyjątek i pozwoli normalnie iterować po wszystkich poprawnie wczytanych liniach.
    Wskazówka: BufferedReader ma metodę readLine(); zwraca ona null, gdy napotka koniec pliku.
    Wskazówka 2: aby hasNext() działał poprawnie, trzeba zawsze mieć wczytana i spamiętaną jedną linie w przód.
Nie ma pracy domowej. Jeśli ktoś chce, to może do poniedziałku przysłać zadanie 4 lub zadanie 6.

środa, 28 maja 2014

Tydzień 14: egzamin, drugie zadanie zaliczeniowe

Ćwiczenia

Platforma eTam (egzamin z roku 2012/2013).

Laboratorium

    Wskazówki do drugiego zadania zaliczeniowego

    1.  Przykład, jak można parsować XML: http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/
    2. Ćwiczenie: skopiować i uruchomić powyższy przykład. Następnie zmodyfikować go tak, by był bardziej obiektowy. Napisz interfejs ObsłużDane i 5 klas implementujących (4 odpowiadają rodzajom danych, jedna odpowiada czemuś co nie jest daną - w przykładzie to np. Staff). W obsłudze startElement ustawia się w switchu odpowiedni obiekt, w characters wywołuje metodę tego interfejsu, która stosownie wypisuje dane. Metoda endElement może (nie musi) ustawiać obsługę na obiekt nieobsługujący danych.
    3. Zmodyfikuj przykład, aby parsował plik ze zrzutem danych z wikipedii. (Plik jest podlinkowany w treści zadania zaliczeniowego.) Dla każdej strony w zrzucie (znacznik page) chcemy wypisać jej tytuł (znacznik title) i treść (znacznik text).

    wtorek, 20 maja 2014

    Oferta pracy

    e-point SA, firma, w której pracuję, szuka osoby do pomocy w promowaniu Vertabelo, naszego narzędzia do modelowania baz danych.

    Co trzeba robić: Zadaniem zatrudnionej osoby będzie wyszukiwanie blogów związanych z bazami danych i nawiązywanie kontaktów z autorami tych blogów, wyszukiwanie forów i społeczności związanych z bazami danych i promowanie Vertabelo w tych społecznościach, tworzenie prostych artykułów technicznych na naszym blogu, itp.  
    W skrócie: pracujesz przeglądając internet i siedząc na Facebooku ;-)
     
    Co trzeba umieć: Trzeba znać język SQL, diagramy ERD, dobrze pisać po angielsku i umieć używać Google'a, Facebooka, Twittera, itp.

    Teoretycznie SQL i ERD to zagadnienia omawiane na zajęciach z baz danych na drugim roku, ale podstawy są do opanowania w kilka tygodni.

    Więcej szczegółów w ogłoszeniu

    W razie pytań można do mnie napisać.


    wtorek, 13 maja 2014

    Tydzień 13: kolekcje cd.


    Ćwiczenia

    Na ćwiczenia proszę rozproszyć się po innych grupach. Ćwiczenia z PO o godzinie 12:
    • sala 3130, Kazimierz Grygiel
    • sala 3140, Jacek Sroka 
    • sala 3150, Marcin Dziubiński
    • sala 3160, Krzysztof Szafran
    • sala 3220, Tomasz Kazana

    Laboratorium

    1. Anagramy to słowa, które składają się z tych samych liter, ale w różnej kolejności. Napisz program, który dla danej listy słów wypisze wszystkie grupy anagramów pojawiające się na tej liście.
    2. Napisz własną implementację listy wraz z iteratorem. Twoja lista powinna mieć nastepujące operacje:
      • dodawanie nowego elementu,
      • rozmiar,
      • test niepustości,
      • iterowanie przy pomocy pętli foreach.
      Wskazówki:
      • Pętlą foreach można iterować po obiektach implementujących interfejs Iterable.
      • Do implementacji iteratora trzeba użyć klas wewnętrznych (ang. inner classes). Klasa wewnętrzna ma dostęp do prywatnych składowych otaczającego obiektu.
      • Warto przeczytać rozdział o klasach wewnętrznych z tutorialu na stronie Oracle.
      • Ściągawkę, jak napisać własny iterator można znaleźć w klasie java.util.AbstractList. W Eclipse trzeba mieć podpięte źródła Javy.  
    3. Dlaczego metody equals() i hashCode() są ważne: uruchom programy Zagadka.java, Zagadka2.java. Wyjaśnij, dlaczego programy tak się zachowują. Co trzeba zmienić, żeby programy zachowywały się zgodnie z oczekiwaniami autora?

    Praca domowa nr 10

    Do wyboru: zadanie 1 lub zadanie 2. Zadanie 1 jest dość standardowe. Zadanie 2 jest odrobinę ciekawsze, bo pokazuje wykorzystanie bardziej zaawansowanych konstrukcji Javy takich, jak pętla foreach i klasy wewnętrzne.

    Termin oddania: 28 maja 2014 r. Za tydzień nie ma zajęć w powodu Wykładów o wykładach.

    środa, 7 maja 2014

    Tydzień 12: kolekcje

    Ćwiczenia

    Zaimplementuj prostą książkę telefoniczną w telefonie komórkowym. Książka powinna zawierać następujące operacje:
    • wyszukiwanie numeru telefonu podanej osoby,
    • zwracanie uporządkowanej alfabetycznie listy osób, których numery telefonu mamy,
    • rozpoznawanie numeru telefonu (identyfikacja, kto do nas dzwoni),
    • dodawanie osoby razem z numerem telefonu,
    • usuwanie osoby.
    Dla uproszczenia można założyć, że każda osoba ma tylko jeden numer telefonu.

    Laboratorium

    1. Napisz program, który dla danego pliku tekstowego wypisze nastepujące informacje:
      • z ilu słów składa się plik,
      • słowo na pozycji 45,
      • z ilu różnych słów składa się plik,
      • wszystkie słowa pliku w kolejności alfabetycznej (każde słowo na liście pojawia się tylko raz),
      • dla każdego słowa, ile razy to słowo występuje w pliku,
      • wszystkie słowa, które mają więcej niż 6 liter, w kolejności alfabetycznej, bez powtórzeń.
      Do rozwiązania zadania należy uzyć odpowiednich kolekcji.
    2. Anagramy to słowa, które składają się z tych samych liter, ale w różnej kolejności. Napisz program, który dla danej listy słów wypisze wszystkie grupy anagramów pojawiające się na tej liście.

    Praca domowa nr 9

    Zadanie nr 1. Termin oddania:  14 maja 2014 r.

    środa, 30 kwietnia 2014

    Tydzień 11: typy uogólnione

    Ćwiczenia

    1. Zaimplementuj stos parametryzowany typem elementów przechowywanych na stosie.
    2. Napisz własne drzewo BST, parametryzowane typem elementów przechowywanych w drzewie. Porządek powinien być zadany jako java.util.Comparator lub java.util.Comparable.
    3. Napisz procedurę sortującą tablicę dowolnego typu. Porządek definiujemy jak w zadaniu 2.

    Laboratorium

    1. Zaimplementuj własną reprezentację drzewa (może być binarne), które w każdym węźle przechowuje obiekty tego samego typu. Twoje drzewo powinno udostępniać następujące operacje:
      • tworzenie pustego drzewa,
      • dodawanie elementu w określonym miejscu drzewa,
      • wypisanie wszystkich elementów drzewa,
      • wyliczenie rozmiaru drzewa,
      • wyliczenie wysokości drzewa,
      • sprawdzenie, czy drzewo zawiera wskazany element.
    2. Zaimplementuj drzewo BST przechowujące wartości tego samego typu. Algorytm porównujący może być dostarczany w postaci (do wyboru) Comparatora lub interfejsu Comparable. Twoje drzewo powinno udostępniać nastepujące operacje:
      • tworzenie pustego drzewa,
      • dodawanie elementu do drzewa,
      • sprawdzenie, czy drzewo zawiera wskazany element,
      • wypisanie wszystkich elementów drzewa w kolejności rosnącej.

    Praca domowa nr 8

    Zadanie nr 2 (drzewo BST). Termin oddania:  7 maja 2014 r.

    Polecane linki

    Generics in the Java Programming Language - tutorial
    Java Generics FAQ 

    wtorek, 22 kwietnia 2014

    Tydzień 10: wyjątki, JUnit

    W moodle'u jest dostępna treść pierwszego dużego zadania zaliczeniowego. Termin oddania: 30 kwietnia 2014 r.

    Ćwiczenia

    URI (ang. Uniform Resource Identifier) jest standardem internetowym umożliwiającym łatwą identyfikację zasobów w sieci. Poniżej fragment odpowiedniego dokumentu RFC, który określa jak wygląda URI.
    /**
    * An example URI and its component parts. [rfc3986]
    *
    * foo://example.com:8042/over/there?name=ferret#nose
    * \_/ \______________/\_________/ \_________/ \__/
    * | | | | |
    * scheme authority path query fragment
    *
    * The pattern is
    * <scheme> : <authority> / <path> ? <query> # <fragment>
    */ 
    
    oraz szkielet walidatora sprawdzającego poprawność URI.
    public class CustomURIValidator {
    String scheme, authority, path, query, fragment;
    public void validate(String uri) throws ... {
    ...
    validateScheme();
    validateAuthority();
    validatePath();
    }
    /** 
      * @return true if c is either ALPHA, DIGIT, ’-’, ’.’, ’_’ 
      * or ’~’ 
     **/
    public static boolean isUnreservedCharacter(char c) { ... }
    
    private void validateAuthority() throws EmptyComponentException,
       ComponentTooLongException {
       if (authority == null || authority.length() < 1)
            throw new EmptyComponentException("authority");
       if (authority.length() > 255)
            throw new ComponentTooLongException("authority",255);
    }
    
    private void validatePath() throws ComponentTooLongException,    
        IllegalCharacterException {
        //leave blank
    }
    
    private void validateScheme() throws ... { ... }
    }
    
    1. Uzupełnij metodę validate o kod dzielący URI na składowe i przypisujący składowe do odpowiednich pól walidatora.
    2. Uzupełnij metodę validateScheme() tak, aby spełnione były następujące wymagania:
      • schemat musi być niepusty.
      • schemat nie może być dłuższy niż 255 znaków.
      • schemat może zawierać jedynie litery, cyfry, myślnik, kropkę, znak podkreślenia lub tyldę (tzw. unreserved characters).
      Jeśli któreś z powyższych wymagań nie jest spełnione, powinien być rzucony odpowiedni wyjątek.
    3. public class IllegalCharacterException extends Exception {
          public IllegalCharacterException(String msg) {
              super(msg); 
          }
      }
      public class EmptyComponentException extends Exception {
          public EmptyComponentException(String msg) { 
              super(msg); 
          }
      }
      public class ComponentTooLongException extends Exception {
          public ComponentTooLongException(String component, int expected) {
               super("The " + component + " component can not be longer than"
                     + expected);
          }
      }
      
    4. Dodajmy nowy wyjątek InvalidCustomURIException:
      public class InvalidCustomURIException extends Exception {/*...*/}
      public class IllegalCharacterException 
             extends InvalidCustomURIException {/*...*/}
      public class EmptyComponentException 
             extends InvalidCustomURIException {/*...*/}
      public class ComponentTooLongException 
             extends InvalidCustomURIException {/*...*/}
      
      Zmień kod metody validate w ten sposób, aby rzucany był jeden wyjątek InvalidCustomURIException zawierający w sobie informacje o wszystkich błędach ze wszystkich składowych. Możesz zmienić kod wyjątków.

    Laboratorium

    1. Zaprojektuj interfejs Stos reprezentujący stos liczb całkowitych.
    2. Zaimplementuj interfejs Stos za pomocą tablicy liczb całkowitych. Rozmiar tablicy ma być podany w konstruktorze. Twoja implementacja powinna rzucać odpowiedni wyjątki (trzeba je zdefiniować) przy próbie zdjęcia elementu z pustego stosu i położenia elementu na przepełniony stos.
    3. Napisz klasę z testami JUnit dla Twojego stosu (albo dla implementacji kolegi z ławki obok).
    4. Napisz program, który wczytuje wyrażenie w odwrotnej notacji polskiej (+, −, *, /) i wylicza jego wartość używając stosu z poprzedniego zadania.
    W tym tygodniu z powodu pierwszego zadania zaliczeniowego nie ma pracy domowej. Ale za tydzień będzie :)

    środa, 16 kwietnia 2014

    Tydzień 9: klasówka przygotowawcza, wyjątki

    Ćwiczenia

    Probówki (klasówka poprawkowa z roku 2009/2010).

    Z powodu świąt i przyszłotygodniowej klasówki w tym tygodniu nie ma pracy domowej. 

    środa, 9 kwietnia 2014

    Tydzień 8: klasówka przygotowawcza, interfejsy

    Przypomnienie: 23 kwietnia (środa po świętach) na wykładzie jest klasówka.

    Ćwiczenia

    Aukcje (klasówka poprawkowa z roku 2008/2009).

    Laboratorium

    1. Zaimplementuj drzewo BST przechowujące liczby całkowite. Chcemy uniknąć dużej liczby testów (czy jest lewe dziecko, czy jest prawe dziecko,...). Wskazówka: trzeba odpowiednio reprezentować puste drzewo przy pomocy polimorfizmu/interfejsów.
    2. Kolejka priorytetowa to struktura danych, do której można wstawiać elementy i z niej je pobierać. Kolejność pobierania elementów zależy od priorytetu tych elementów, najpierw wydawane są elementy o wyższym priorytecie. Zdefiniuj i zaimplementuj interfejs KolejkaPriorytetowa z operacjami:
      • void dodaj(int priorytet, String s) – dodaje do kolejki nowy napis z żądanym priorytetem.
      • String[] pobierz() – pobiera z kolejki wszystkie napisy obiekty o najmniejszej wartości priorytetu (może być ich wiele, stad wynikiem jest tablica). Pobrane elementy są usuwane z kolejki.
      • boolean czyPusta() – wynikiem jest true wtedy i tylko wtedy, gdy w kolejce nie ma już elementów.
      Zdefiniuj klasę realizującą ten interfejs za pomocą jednej z metod: lista posortowana, kopiec, drzewo BST.
      Napisz program, który wczyta ze standardowego wejścia kilka napisów, a następnie wypisze wczytany zbiór posortowany (za pomocą KolejkiPriorytetowej) ze względu na liczbę wystapień litery a w napisie.

    Praca domowa nr 7 

    Arimaa (klasówka poprawkowa z roku 2011/2012). Rozwiązanie należy oddać w wersji papierowej, napisane ręcznie. Termin oddania: 16 kwietnia 2014 r. Tej pracy domowej nie można poprawiać.

    środa, 2 kwietnia 2014

    Tydzień 7: wyrażenia cz. 2

    Ćwiczenia

    Kontynuujemy zadanie o wyrażeniach z poprzedniego tygodnia. Dziś dodamy upraszczanie wyrażeń. Chcemy, aby wyrażenia tworzyły się w postaci uproszczonej zgodnie z takimi regułami:

    • stała + stała → stała
    • 0 + wyrażenie → wyrażenie
    • wyrażenia + 0 → wyrażenie
    • stała * stała → stała
    • 1 * wyrażenie → wyrażenie
    • wyrażenie * 1 → wyrażenie

    Laboratorium

    Laboratorium jest odwołane z powodu Olimpiady Informatycznej.

    środa, 26 marca 2014

    Film: Inheritance, Polymorphism, & Testing

    Polecam ciekawy wykład o programowaniu bez if-ów, między innymi na przykładzie wyrażeń.

    Tydzień 6: dziedziczenie

    Ćwiczenia

    Chcemy zdefiniować klasę obiektów reprezentujących wyrażenia arytmetyczne jednej zmiennej rzeczywistej (x). Interesują nas następujące operacje:

    • policzenie wartości w zadanym punkcie,
    • policzenie (symboliczne) pochodnej,
    • policzenie (numeryczne) całki oznaczonej,
    • wypisywanie.
    Wyrażenia mogą zawierać:
    • stałe liczbowe,
    • wystąpienia zmiennej x,
    • operatory arytmetyczne (dwuargumentowe): +, -, *, /, ...
    • funkcje jednoargumentowe: sin, cos, lg, ...
    • nawiasy okrągłe.

    Laboratorium

    Zaprojektuj hierarchię klas opisujących pojazdy komunikacji miejskiej. Wyraź w tej hierarchii nastepujące fakty:
    • wszystkie pojazdy komunikacji miejskiej (k. m.) są pojazdami,
    • komunikacja miejska używa tramwajów i autobusów,
    • pojazdy są garażowane w zajezdniach,
    • każdy pojazd zna swoją szybkość maksymalną,
    • każdy pojazd k. m. zna swój numer,
    • każdy pojazd k. m. zna swoją zajezdnieę,
    • każdy tramwaj jest zestawem 1 do 3 wagonów (i wie, z ilu wagonów się składa),
    • każdy autobus wie, ile zużył paliwa w bieżącym miesiącu,
    • każda zajezdnia zna swoja nazwę,
    • każda zajezdnia wie, jakie pojazdy do niej należą,
    • każda zajezdnia ma nazwę.
    Każdy pojazd musi umieć podać swój opis w postaci napisu. Opis ma zawierać wszystkie informacje, które zna dany pojazd (np. numer, czy szybkość maksymalną). Opis zajezdni to nazwa zajezdni i opisy poszczególnych pojazdów.

    Praca domowa nr 6

    Zadanie o tramwajach. Termin oddania: 9 kwietnia 2014 r.

    środa, 19 marca 2014

    Tydzień 5: klasy

    Ćwiczenia

    Zaimplementuj liczby całkowite dowolnego rozmiaru. Operacje do zaimplementowania: dodawanie, odejmowanie, mnożenie przez liczbę typu int, tworzenie.

    Laboratorium

    Zaimplementuj klasę Wielomian. Wielomian powinien mieć:
    • konstruktor bezargumentowy tworzący wielomian zerowy;
    • konstruktor tworzący jednomian;
    • konstruktor tworzący wielomian na podstawie tablicy współczynników; nie marnujemy pamięci – trzymamy tablice długości stopień wielomianu + 1;
    • metodę liczącą wartość wielomianu w punkcie;
    • metody dodaj(Wielomian) i odejmij(Wielomian) zwracającą nowy wielomian będący sumą (różnicą) pierwszego i drugiego argumentu;
    • (dla chętnych) metodę pomnóż(Wielomian) zwracającą iloczyn pierwszego i drugiego argumentu.
    W nowym pakiecie utwórz klasę Program korzystającą z Wielomianu. Program bierze jako argumenty wiersza poleceń listę współczynników pierwszego wielomianu, nastepnie symbol działania, a potem listę współczynników drugiego wielomianu. Program wypisuje podanego wynik działania na standardowe wyjście. Np.
    java main.Program 1 0 1 + 1 1 -1 1
    daje w wyniku
    2+x^1+x^3

    Praca domowa nr 5

    Zadanie o wielomianie. Termin oddania: 26 marca 2014 r.

    środa, 12 marca 2014

    Tydzień 4: proste klasy

    Ćwiczenia

    1. Zdefiniuj klasę Pracownik (podobnie do klasy osoba z wykładu, dodając jeszcze tekstową informację o zajmowanym przez pracownika stanowisku). Następnie zdefiniuj klasę Firma, która by przechowywała w tablicy spis wszystkich pracowników (możesz założyć, że liczba pracowników nie przekracza 100). Zdefiniuj metody dodawania nowych pracowników do firmy oraz wypisywania aktualnego spisu pracowników. Zastanów się, jak przy tym ostatnim zadaniu rozdzielić odpowiedzialności pomiędzy obie klasy.
    2. Zdefiniuj klasę opisującą datę. Zastanów się nad wyborem wewnętrznej reprezentacji dat. Zdefiniuj metody pozwalające na odczytywanie bieżącej daty i przestawianie jej o jeden tydzień w przód i w tył. Zadbaj o dobranie odpowiednich modyfikatorów dostępu do składowych.
    3. Zdefiniuj klasę Liczba, która przechowuje w tablicy cyfry liczby dziesiętnej. Zdefiniuj operacje wypisywania liczby, nadawania jej wartości (w postaci parametru konstruktora będącego napisem) oraz mnożenia przez liczbę typu int. W przypadku gdy w czasie mnożenia okaże się, że tablica jest za mała, procedura mnożąca powinna kopiować jej zawartość do większej. Zdefiniuj wreszcie metodę silnia, która policzy silnię zadanej jako parametr liczby typu int.

     Laboratorium

    Na forum Szybkość programów w Javie w moodle'u należy umieścić wynik porównania programu napisanego w Javie oraz w innym języku programowania. Termin oddania: 26 marca 2014 r. To zadanie warte jest jeden punkt.
    1. Skompiluj i uruchom w Eclipse program HelloWorld z poprzednich zajęć. Podepnij w Eclipse źródła Javy.
    2. Napisz klasę Osoba. Każda osoba ma imię, nazwisko oraz płeć. W innej klasie napisz program, który wczytuje listę 10 osób, a następnie wypisuje ich dane w odwrotnej kolejności. Skompiluj i uruchom program a) pod Eclipse b) z linii komend.
    3. Zmień klasę Osoba z poprzedniego zadania tak, aby każda osoba miała matkę i ojca. Stwórz kilka osób i powiązań pomiędzy nimi. Dodaj metodę, która zwraca imię i nazwisko ojca lub napis „Nieznany”, jeśli referencja do ojca jest nullem. Dodaj metodę, która przyjmuje parametr typu Osoba i zwraca informacje, czy podane osoby mają tę sama matkę.
    4. Utwórz klasę Ulamek reprezentującą ułamek zwykły. Klasa ma udostępniać operacje dodawania, odejmowania, mnożenia, dzielenia oraz wypisywania ułamków (metoda toString()). Ułamki powinny być przechowywane w postaci uproszczonej (zadbaj o to w konstruktorze). W innej klasie napisz program, który wczyta 10 ułamków ze standardowego wejścia, a następnie policzy ich sumę oraz iloczyn. Skompiluj i uruchom program a) pod Eclipse b) z linii komend.

    Praca domowa nr 3

    Do wyboru zadanie 2+3 lub zadanie 4.  Termin oddania: 19 marca 2014 r.

    środa, 5 marca 2014

    Tydzień 3: modelowanie obiektowe cd, wstęp do Javy

    Ćwiczenia

    Model dziedziny dla systemu rejestracji kurdli.

    Laboratorium

    1. Skompiluj i uruchom na swoim komputerze program HelloWorld.
    2. Napisz program wypisujący na ekran wszystkie argumenty z wiersza polecenia.
    3. Napisz program wyliczający wartość największego wspólnego dzielnika dwu zadanych wartości.
    4. Napisz program wypisujący rozkład zadanej liczby naturalnej większej od zera na czynniki pierwsze.
    5. Napisz program wypisujący pierwszych n liczb Fibonacciego.
    6. Napisz program wypisujący pierwszych n liczb pierwszych. Użyj sita Eratostenesa.
    Zagadka: co robi program Zagadka.java?

    Praca domowa nr 2

    Do wyboru jedno zadanie spośród: zadanie 3, zadanie 4, zadanie 5, zadanie 6.

    środa, 26 lutego 2014

    Tydzień 2: modelowanie obiektowe

    Ćwiczenia

    Wstęp do modelowania obiektowego. Model dziedziny dla gry w Monopol, model dziedziny dla systemu kasowego. Lista kategorii klas pojęciowych.

    Laboratorium

    Modelowanie obiektowe za pomocą programu Visual Paradigm. W laboratorium przy pierwszym uruchomieniu programu, należy podać klucz aktywacyjny, który jest do pobrania ze strony wydziału. Klucza można także użyć na komputerze prywatnym.

    Zadanie: model dziedziny dla biblioteki.

    Praca domowa nr 1

    Model dziedziny dla biblioteki. Proszę o przesłanie obrazka z diagramem. Na obrazku powinno znaleźć się Państwa imię i nazwisko oraz numer indeksu.
    Termin oddania: 5 marca 2014 r.