Prevayler: Krok po kroku

Pracownia 1

powrót do strony kursu..

Uwaga: Wszystkie poniższe ćwiczenia mają za zadanie jedynie pomóc przy uczeniu się Prevayler. Są dobrowolne. Nie będzie za nie punktów ani złych ocen.
Możliwe rozwiązania przedyskutujemy na pracowni lub wykładzie. Pwodzenia :)

Ćwiczenie 1 - Program obiektowy
Zaprojektować mały świat (nazwy klas podane kursywą) (zad1?):

Rodzina (Family) składa się z rodziców (Parent) oraz dzieci (Child). Rodzice wiedzą jakie mają dzieci i odwrotnie.
Dzieci w rodzinie jest pięcioro. Ich imiona: Piotruś, Maciuś, Pawełek, Iwona, Asia.
[W miarę potrzeby, pozostałe wymagania można sobie dospecyfikować.]

Mając dany program FamilyTest, zaimplementować (dokończyć FamilyTest), następujące zapytania:

  • pobierz wszystkie dzieci rodziny (zad2?)
  • Pobierz te dzieci, których imiona zaczynają się od literki "P" (zad3?)

Klasy można implementować dowolnie, wszystko zależy od wyobraźni. Do przechowywania danych można użyć standardowych klas (java.util.ArrayList, java.util.HashMap, ...) lub napisać własne.

Ćwiczenie 2 - Zapytania
Zapytania

  • SQL: mając dane tabele PARENTS (ID INT, NAME VARCHAR) oraz CHILDREN (ID INT, NAME VARCHAR) zapytanie pokazujące dzieci, które mają rodziców wygląda tak ( ParentsSQL.java):

    
        public Collection getChildren()
        {
            Collection children = new ArrayList();
    
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(
                    "SELECT NAME FROM CHILDREN WHERE ID IN "
                    + "(SELECT ID FROM PARENTS)");
    
            while (resultSet.next())
                children.add(resultSet.getString("NAME"));
            statement.close();
    
            return children;
        }
    
  • Prevayler: mając klasy class Parent {String name; Collection children;} oraz class Child {String name;} zapytanie pokazujące dzieci rodziców wygląda tak ( Parents.java):

        public Collection getChildren()
        {
            Collection children = new ArrayList();
            for (Iterator p = parents.iterator(); p.hasNext(); )
            {
                Parent parent = (Parent) p.next();
                children.addAll(parent.getChildren());
    
            }
            return children;
        }
                    

Pytanie: Jaka jest zasadnicza różnica pomiędzy zwracanym wynikiem w obu zapytaniach (kolekcja children)? (zad4?)
( podpowiedź)

Ćwiczenie 3 - Serializacja
Uruchomić program SerializationThroughput.java i zobaczyć (zad5?) ile obiektów typu Integer może zserializować komputer.

Zmodyfikować kod programu (zad6?), tak aby zamiast serializacji obiektu typu Integer, serializowany był obiekt innej klasy (można wykorzystać przykłady z tej listy: Parent, Child).
Porównać wyniki.

Ćwiczenie 4 - Własny projekt
Na pracowni będziemy pokazywali jak korzysta się z Prevayler w praktyce. Studenci będą mieli swoje własne programy, dzięki którym odkryją zalety i wady Prevayler.
W związku z powyższym każdy student (preferowane grupy dwuosobowe) powinien zrobić jedno z poniższych (zad7?):
  • wymyślić swój własny projekt (z własną specyfikacją)
  • wziąć swój stary program, w którym dane zapisywane są do bazy danych - preferowane
W drugim przypadku, z programu usuniemy warstwę danych i pokażemy jak użyć w takim przypadku Prevayler

Uwaga: celem ćwiczenia 4 nie jest napisanie programu, tego programu być może nawet nie da się napisać w przeciągu całego kursu. Na pierwszą pracownię należy posiadać pomysł. W czasie pracowni będzie on realizowany.

Designed with CSS| Get Firefox!| | Opel Omega Forum|

Copyright © Tomasz Nazar 2007
Revision: $Id: index.gtml 3768 2005-07-25 23:47:33Z nthx $