Upload
rune-sundling
View
531
Download
1
Embed Size (px)
Citation preview
Med hovedfokus på server-siden
Presentasjon av OO temaer (09:15 - 10:30)
Oppgaver (10:30 - 12:00)
Lunch (12:00 - 12:45)
Oppgaver forts. (12:45 - 15:15)
Oppsumering og diskusjon (15:15 - 16:45)
Å utvikle et program vil si å lage en struktur som møter alle tekniske og operasjonelle krav, samtidig som det løser alle kvalitetsattributter som ytelse, sikkerhet og vedlikehold godt. Og ikke minst må utvikling/videreutvikling gå raskt.
”Division of responsibilities for an application or system into individualreusable and self-sufficient objects,
each containing the data and thebehavior relevant to the object”
”An objectoriented design views a system as a series of cooperating
objects, instead of a set of routines or procedural instructions.”
” Consider the object-oriented architectural style if you want to model your application based on real world
objects and actions, or you already have suitable objects and classes that match the design and operational
requirements. The object-oriented style is also suitable if you must encapsulate logic and data together in reusable
components or you have complex business logic that requires abstraction and dynamic behavior.”
Abstraksjon
Komposisjon
Arv
Enkapsulering
Polymorfisme
Decoupling
En naturlig abstraksjon av den virkelig verden
Finn passende objekter
Plasser kode der det hører hjemme
En klasse(/…) skal gjøre en, og kun en, ting veldig godt
Favoriser lav kobling
Favoriser gjenbruk av kode (joda, men…)
Testbarhet
Utvidbarhet
Høy kohesjon
Gjenbrukbarhet
Prosedurelle
Transaction script
Table module
Objektorienterte
Active record
Domain model
”Organizes business logic by procedures where each procedurehandles a single request from the
presentation.”
Bra
Enkelt
Lett forståelig i forhold til use case-er
Dårlig
Sliter med komplisert logikk
Duplisering av kode
Vanskelig å teste, gjør mange ting
”A single instance that handles the business logic for all rows in a database table or view”
Bra Spesielt bra i .NET grunnet verktøystøtten Glimrende for RAD-applikasjoner Godt kompromiss hvis man ikke trenger mye abstraksjon over
datamodellen
Dårlig Domenelogikk På instans-forhold og polymorfisme Fokuserer på data, ikke forretningssiden = databasedrevet Dårlig til å uttrykk graf/sammensetning av objekter Kompliseres hvis du må gå utenom VS wizard-støtte og
kodegenerering
”An object that wraps a row in a database table or view, encapsulatesthe database access, and addsdomain logic on that data.”
Bra
Enkelhet (ved rammeverk)
For enkle objektmodeller
Når objektmodellen er omtrent identisk med databasemodellen
Dårlig
Tett kobling mot databasen
Blander ansvar
Loading av massevis av rader
”An object model of the domainthat incorporates both behavior and data”
Bra
Fristilles i stor grad fra datamodellen
Glimrende til komplekse forretningsregler
Testbarhet
Dårlig
Vanskelig å lære
Høy kostnad for mapping mot databasen
Er fokuset på operasjoner
=> Transaction script
Er fokuset mer på tabeller av data
=> Table module
Datamodellen ligner databasemodellen
=> Active record
Avansert domenemodell
=> Domain model
Ser ut som domenemodell
Rik struktur av objekter
MEN – nesten ingen oppførsel i objektene
Logikken styres typisk via Transaction Script.
Bra Du kan skryte av å ha en domene-modell (du lyver)
Lett å generere automatisk fra databasen
Samme som transaction script (Enkelt, lett forståelig i forhold til use case-er)
Dårlig Høy kostnad for mapping mot databasen
Oppførsel i transaction scripts
Samme som transaction script (Sliter med komplisert logikk, duplisering av koden,
utfordrende å teste, gjør mange ting)
Eksperiment med 99 junior, mellom og senior konsulenter + 59 studenter
“The results show that the most skilled developers, in particular, the seniorconsultants, require less time to maintain software with a delegated control style than with a centralized control style.”
= objekt orientert modell
However, more novice developers, in particular, the undergraduate students and junior consultants, have serious problems understanding a delegated control style, and perform far better with a centralized control style
= prosedurell
IEEE Transactions on Software Engineering, Volume 30, Issue 8, 2004: Evaluating the Effect of a Delegated versus Centralized Control Style on the Maintainability of Object-Oriented Software
Mobil-applikasjoner
Tykke klient-applikasjoner
Tykke internet-applikasjoner
Service-applikasjoner
Web-applikasjoner
Hva har det å si?
“A complex system that works is invariably found to have evolved
from a simple system that worked.”