Principy OOP při tvorbě aplikací v JEE. Michal Čejchan



Podobné dokumenty
(Enterprise) JavaBeans. Lekce 7

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Převod 4GL aplikací do webového prostředí. Ing. Jan Musil, IBM ČR Community of Practice for

Základy objektové orientace I. Únor 2010

Řízení reálných projektů, agilní metodiky

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Návrhové vzory OMO, LS 2014/2015

10 Balíčky, grafické znázornění tříd, základy zapozdření

Tvorba informačních systémů

Semináˇr Java X J2EE Semináˇr Java X p.1/23

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7

Vyřešené teoretické otázky do OOP ( )

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

6 Objektově-orientovaný vývoj programového vybavení

Business Process Modeling Notation

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33

MVC (Model-View-Controller)

Vývoj informačních systémů. Přehled témat a úkolů

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

11 Návrh programového vybavení

TÉMATICKÝ OKRUH Softwarové inženýrství

Programování II. Modularita 2017/18

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Vývoj informačních systémů. Přehled témat a úkolů

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

Smysl metodiky IS/IT. Koncentrovaná zkušenost Checklist na nic nezapomeneme

Návrhové vzory pro J2EE. Miroslav Beneš

Objektově orientovaný přístup

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Enterprise Java Beans 3.0

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Databázové a informační systémy

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

7 Jazyk UML (Unified Modeling Language)

Obsah. Zpracoval:

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Návrhové vzory pro J2EE

1. Programování proti rozhraní

Usage of modular scissors in the implementation of FEM

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Úvod do problematiky vývoje Vývoj informačních systémů

Jak správně psát scénáře k případům užití?

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Programovací jazyky Přehled a vývoj

Objektově orientované technologie Dynamický náhled Sekvenční diagram (Realizace UC) Daniela Szturcová

Softwarové komponenty a Internet

KIV/ASWI 2007/2008 Pokročilé softwarové inženýrství. Cíle předmětu Organizační informace Opakování

RUP - Disciplíny. Jaroslav Žáček jaroslav.zacek@osu.cz

Základy analýzy. autor. Jan Novotný února 2007

Principy objektového návrhu. Přednáška 8, LS 2013/2014

7 Jazyk UML (Unified Modeling Language)

Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.

Stručný úvod pro programátory. Michal Kuchta

PŘÍLOHA C Požadavky na Dokumentaci

Metody popisu systému, základy UML

Objektově orientované technologie Diagram komponent Implementační náhled (Diagram rozmístění) Pavel Děrgel, Daniela Szturcová

Objektové programování

Architektura aplikace

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Architektura softwarových systémů

Modelování procesů s využitím MS Visio.

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Rady pro tvorbu USE CASE MODELU, rada první: Jak pracovat s pojmy ve scénářích UC

IS pro podporu BOZP na FIT ČVUT

IB111 Programování a algoritmizace. Programovací jazyky

PROGRAMÁTOR ANALYTIK. Náplň práce:

Zpracoval:

KTE / ZPE Informační technologie

Sada 1 - Základy programování

8 Třídy, objekty, metody, předávání argumentů metod

Architektury informačních systémů

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Návrhové vzory Tvorba objektů

Návrh IS - UML. Jaroslav Žáček

Úvod do softwarového inženýrství a týmového vývoje

MODELOVÁNÍ DAT V INFORMAČNÍCH SYSTÉMECH. Jindřich Kaluža Ludmila Kalužová

Semestrální práce KIV/PC

Architektury Informačních systémů. Jaroslav Žáček

Modelování webových služeb v UML

7.5 Diagram tříd pokročilé techniky

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

Bioadresář. Specifikace požadavků. Verze Datum Projektový tým Bc. Martin Ventruba Bc. Ondřej Veselý Bc. Stratos Zerdaloglu

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

PV167 Projekt z obj. návrhu IS. 26. března 2008

Objekty, třídy, vazby 2006 UOMO 30

DATOVÉ MODELOVÁNÍ A TYPOVÁNÍ

Transkript:

Principy OOP při tvorbě aplikací v JEE Michal Čejchan

Témata přednášky Principy OOP - připomenutí Úvod - co nás vede k používání OOP Reálný svět - jak (ne)používáme OOP Nedostatky na úrovni programovacích jazyků Způsob návrhu aplikace v objektovém jazyce Java EE aplikace

Základní principy OOP (připomenutí) Encapsulation Polymorphism Abstraction - understandability Inheritance Modularization - loose coupling Composition - structured design

Co nás vede k používání OOP? Efektivita programování Zábava Přehlednější a hezčí kód Lépe udržovatelný kód Nevzniká tolik duplicit

Nevyužívání OOP Praxe: převážná většina aplikací je psána pomocí objektových jazyků, ale velké procento kódu je napsáno neobjektově. Proč? Programátoři používají objektové jazyky, ale programují neobjektově. Důvody: závislost na technologii závislost na frameworku závislost na standardizovaných firemních postupech použití návrhových vzorů programátor z nějakého důvodu nechce použít objektový přístup nedostatečná znalost OOP jazyk sám o sobě má nedostatky

Nedostatky na úrovni programovacích jazyků Ačkoliv jsou principy OOP obecně uznávány za platné, programovací jazyky se liší v jejich interpretaci Objective C - chybí privátní metody Java - Nemožnost rozšířit některý ze základních objektů jako String o další metody. Např. chceme přidat metodu leftzeros ("34", 4) -> "0034" Konstrukty jako anotace nebo používání reflexe řeší problémy, které přesahují možnosti syntaxe Java. Zavádění neobjektových syntax jako např. method reference nebo closures { String => int } parseint = Integer#parseInt(String); int x = parseint.invoke("42");

Dva pohledy na návrh aplikace Data Driven Design Responsibility Driven Design

Data Driven Design Data aplikace jsou hlavním prvkem, okolo který je opřený celý návrh. Analýza zpravidla začíná návrhem databázové struktury. Vrstvy + data: data protékají aplikací a přetvářejí se do požadovaného výstupu Vede na procedurální návrh Obecně je považován za postup, který vede na špatný objektový návrh na rozdíl od Responsibility Driven Design

Responsibility Driven Design někdy také zaměňovaný s Domain Driven Design (širší pojem) vede na OOP návrh inspirovaný client-server modelem zaměřuje se na kontrakt mezi objekty zodpovězěním otázek: Jaké akce má tento objekt na starosti Jaké informace objekt sdílí svému okolí v idealizované formě: zapouzdření doménových objektů, které se starají samy o sebe včetně perzistence atd.

Realita v Java EE Aplikace v objektovém jazyce: posílání zpráv mezi objekty Aplikace v Java EE: čtení atributů objektů (objekty reprezentující entity nebo neperzistentní data), práce s daty je soustředěna v objektech typu manager, facade, controller, helper atd. Aplikace není designována v OOP, ale v Java EE

Realita v Java EE EJB: Stateful vs. Stateless beany Stateless EJB si neudržují žádný vnitřní stav, což je základní předpoklad pro objektové programování. Použití stateful EJB má své limity vyplývající z použité technologie; jejich použití se proto snažíme omezit nebo se ho vyvarovat. Řešením je používat EJB pouze jako vstupní facade, která není zahrnuta v objektovém modelu. Propojení modulů přes RMI/WS technologie, kde jsou požadavky na coarse-grained rozhraní. stejně jako v předchozím případě - používat jenom jako facade Používání UML pro modelování aplikace má vliv na výslednou podobu programu.

Návrhové vzory Příklad neobjektových návrhových vzorů Facade Data Transfer Object Příklad objektových návrhových vzorů Command Template Method

Data Transfer Object Návrhový vzor, který odděluje data od business logiky Vznikají objekty ekvivalentní pascalovskému typu record Následně se objevuje kód typu: FooObject.Property.Item(Index).Method(Parameter 1, Parameter2).Property = BarObject.Method(Parameter 1).Property.ToSomeObjectType() Pro použití vyžaduje rozsáhlou znalost vnitřní funkcionality Nefunguje zde zapouzdření. Objekt poskytuje veškeré atributy navenek.

Objektový model ovlivněný funkční specifikací Programátor je ovlivněn formou zadání, Analýza může popisovat systém na jiném stupni abstrakce, např. pomocí use-case nebo sekvenčních diagramů. Tato část analýzy nic neříká o objektovém modelu, který by měl vzniknout.

Zadání ve formě use-case nebo sekvenčního diagramu

Modelování v UML UML neposkytuje dostatečné nástroje pro použití návrhových vzorů. Pokud analytik navrhuje použití návrhového vzoru, musí to sdělit jinak. Modelování jednotlivých tříd a jejich vztahů je časově náročné a model není snadno udržovatelný. Proto popisujeme funkcionalitu až na úrovni větších celků, které si programátor rozdělí do tříd. Vyšší požadavky na kázeň programátora

Shrnutí OOP v praxi Pokud chcete používat OOP, je dobré si uvědomit omezení, která přináší různé technologie. Pokaždé, když budete přidávat novou metodu nebo atribut do třídy, položte si otázku: Patří to sem? Jaká je zodpovědnost této třídy? Jestliže nedokážete zodpovědět jednoduše, je něco špatně. Pište dokumentaci k třídám. Zdokumentovaná třída má jasně vymezenou zodpovědnost a je snazší rozhodnout, co do ní opravdu patří. Není samozřejmostí, že použití objektového jazyka vede na výslednou aplikaci v OOP.

Diskuse