290 likes | 409 Views
Információs környezetek a szervezésben és a tervezésben. Vég Csaba Veg.Csaba@xsys.hu. I. A probléma. OO?. Pont és Egyenes osztály? Illeszkedés vizsgálat: Pont osztályban? Egyenes osztályban? statikus metódus?. Kör és Egyenes metszéspontjai?. OO?.
E N D
Információs környezetek a szervezésben és a tervezésben Vég CsabaVeg.Csaba@xsys.hu
OO? • Pont és Egyenes osztály? • Illeszkedés vizsgálat: • Pont osztályban? • Egyenes osztályban? • statikus metódus? • Kör és Egyenes metszéspontjai? www.xsys.hu
OO? • Játékprogram: szobában felrobbanó bomba megsérti a játékost • Játékos ellenőrzi, hogy hat-e rá valami • A Bomba kezdeményez: • Bomba.robban: játékosok megkeresése • Játékos.sérülés: hatás felvétele • Hogyan lehet módosítani/szűrni a hatást (varázsszoba)? www.xsys.hu
OO? • Készítsünk olyan programot, amelyben egy billiárdgolyó halad egy téglalapban, és az oldalaknál irányt vált. • Készítsünk olyan programot, amelyben két billiárdgolyó halad egy téglalapban, és az oldalaknál irányt vált. • Ütközés? • Készítsünk olyan programot, amelyben tetszőleges számú billiárdgolyó halad egy téglalapban, és az oldalaknál irányt vált. • Ütközés? www.xsys.hu
Információs környezet • Információs környezet: • Pont, Egyenes, Kör: Sík • Játékos, Bomba: Szoba • Biliárdgolyók: Biliárdasztal • Legalapvetőbb jellemzők • ismerheti a tulajdonságait • ismerheti az elemek viszonyait • felelős a hatások átviteléért: közeg • ismerheti a benne elhelyezkedő elemeket www.xsys.hu
Információs környezet • „design pattern” • tradícionális OO egyszerű kiegészítése • szemlélet: • OO: alkalmazás széttöredezése objektumokra • Információs környezetek: viszonyokban való gondolkodás www.xsys.hu
Példák • JavaScript: „külső”-„belső” objektumok • Java belső osztályok: elérik a külső objektum attribútumait és műveleteit • BeanContext: a környezetek szolgáltatásokat definiálhatnak www.xsys.hu
A szerkezet… • a csomag-hierarchiákhoz hasonlóak, de változókkal és műveletekkel („szolgáltatásokkal”) is rendelkeznek • Java csomag: nem alkalmas • általában hierarchikus, ritkább esetben „dag” szerkezetet alkotnak • JScript: hierarchikus objektum-rendszer • az alkörnyezet eléri a tartalmazó „szülő” környezet(ek)et • JScript • egyetlen elem is tekinthető környezetként • külső környezet elérhetőségének biztosítása www.xsys.hu
Viszonyok... • A környezet definiálhatja az objektumok közötti viszonyokat • statikus metódus: „konstans” viszony • nem statikus metódus (szűrési lehetőség): • átdefiniálható • környezeti változók/más elemek • Egyetlen elem adott tulajdonsága www.xsys.hu
Attribútumok… • a környezeteknek lehetnek aktuális értékeik, pl. az aktuálisan kezelt üzleti objektumok • a környezetek alapértelmezésként elérik a külső környezet aktuális értékeit, ill. átdefiniálhatják azokat www.xsys.hu
Műveletek… • A környezeteken keresztül elérhetők szolgáltatások (műveletek) • A környezethez kapcsolódó szolgáltatásnak célszerű transzparensnek lenni: a környezetben meg kell ismételni a műveletet és a hívást delegálni kell • Az alkörnyezet elérheti a külső szolgáltatásait • az alkörnyezetben célszerű megismételni a műveletet és a hívást delegálni kell • Az alkörnyezet újabb szolgáltatásokat definiálhat • Az alkörnyezet átdefiniálhatja a külső szolgáltatásait www.xsys.hu
Származtatás-tartalmazás… • Attribútumok: • a környezetek alapértelmezésként elérik a külső környezet aktuális értékeit, ill. átdefiniálhatják azokat • Szolgáltatások: • Az alkörnyezet elérheti a külső szolgáltatásait • Az alkörnyezet újabb szolgáltatásokat definiálhat • Az alkörnyezet átdefiniálhatja a külső szolgáltatásait www.xsys.hu
Elemek és hatások… • Ismerhetik az elemeket • A környezetek alkalmasak a hatások átvitelére, ill. esetleges szűrésére • Eseménykezelés • Bubbling: DOM2 www.xsys.hu
Ipari minőségű szoftver • környezetek: architektúra váz • lépéssorozat • egzakt, • egyszerűen alkalmazható • áttekinthető • technológiafüggetlen réteg • skálázható design www.xsys.hu
Service Service Service Service Module Module Service UI Service UI Module Model Model UI Model Application www.xsys.hu
VideonBaseTools működtetés Service .sql.VideonData Service Data facade VideonSql Business rules/procs Service Service Alkalmazás ("videon") VideonBase VideonData Videon www.xsys.hu
Service Service Service Service Alkalmazás - kliens VideonBase VideonClientTools VideonData .ejb.VideonData Videon Videon www.xsys.hu
Működtetés • Alkalmazás/Modulok • Elérik a felsők definícióit • Model (konkrét) • Eseménykezelés • Aktuális értékek (property-change jellegű) Service UI Model UI Model www.xsys.hu
Service Application Service Service Service Module Module Service UI Service UI Module Model Model UI Model www.xsys.hu
Business Facade: • Business Rules • Környezetek alapján elhelyezés • Data Acces Facade • Data Facade + Data Item • Technológiafüggetlen elérés + Scalable Design www.xsys.hu
import xsys.*; public interface Casette extends Entity { public String getCode(); public void setCode( String code ); public Date getBorrowDate(); public void setBorrowDate( Date borrowDate ); public Movie getMovie(); // Kapcsolat! public void setMovie( Movie movie ); public Customer getCustomer(); // Kapcsolat! public void setCustomer( Customer customer ); } www.xsys.hu
public interface Movie extends xsys.Entity { public String getTitle(); public void setTitle(String title); public String getOriginalTitle(); public void setOriginalTitle(String originalTitle); public String getDistributor(); public void setDistributor(String distributor); public int getReleaseDate(); public void setReleaseDate(int releaseDate); public String getReleaseDateString(); public void setReleaseDate(String releaseDate); public String getDirector(); public void setDirector(String director); public String getActors(); public void setActors(String actors); public Casette eachCasette(); // több multiplicitás public Advance eachAdvance(); // több multiplicitás } www.xsys.hu
public interface Entity extends java.util.Iterator { public Object id(); // id public void save(); public int size(); // Collection-like public boolean isEmpty(); public void removeAll(); public void add(Object data); public void remove(Object data); public boolean hasNext(); // Iterator/Cursor public Object next(); public void remove(); } www.xsys.hu
Használat Movie movie=videon.getMovie(movieId); // for(Movie movie=videon.eachMovie(); movie.hasNext(); ){ movie.next(); ... if(…) movie.remove(); … } // movie.eachCasette().add( videon.createCasette( code ) ); // movie.eachCasette().removeAll(); // customer.eachCasette().isEmpty() www.xsys.hu
Data Access Facade • Teljes: összes strukturális művelet • Kiterjesztés elemi adatokra ( Values ) • Legalapvetőbb nyelvi eszközök • Minimális redundancia! • Tiszta („elvi”) kép a kliens/BusinessLayer felé • Scalable Design • közvetlen adatelérés (JDBC) • távoli adatelérés (RMI) • J2EE EJB www.xsys.hu
Köszönöm a figyelmet! Veg.Csaba@xsys.hu www.xsys.hu