32
Med hovedfokus på server-siden

Objektorientering og design av kode

Embed Size (px)

Citation preview

Page 1: Objektorientering og design av kode

Med hovedfokus på server-siden

Page 2: Objektorientering og design av kode

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)

Page 3: Objektorientering og design av kode

Å 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.

Page 4: Objektorientering og design av kode

”Division of responsibilities for an application or system into individualreusable and self-sufficient objects,

each containing the data and thebehavior relevant to the object”

Page 5: Objektorientering og design av kode

”An objectoriented design views a system as a series of cooperating

objects, instead of a set of routines or procedural instructions.”

Page 6: Objektorientering og design av kode

” 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.”

Page 7: Objektorientering og design av kode

Abstraksjon

Komposisjon

Arv

Enkapsulering

Polymorfisme

Decoupling

Page 8: Objektorientering og design av kode

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…)

Page 9: Objektorientering og design av kode

Testbarhet

Utvidbarhet

Høy kohesjon

Gjenbrukbarhet

Page 10: Objektorientering og design av kode
Page 11: Objektorientering og design av kode

Prosedurelle

Transaction script

Table module

Objektorienterte

Active record

Domain model

Page 12: Objektorientering og design av kode

”Organizes business logic by procedures where each procedurehandles a single request from the

presentation.”

Page 13: Objektorientering og design av kode
Page 14: Objektorientering og design av kode

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

Page 15: Objektorientering og design av kode

”A single instance that handles the business logic for all rows in a database table or view”

Page 16: Objektorientering og design av kode
Page 17: Objektorientering og design av kode

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

Page 18: Objektorientering og design av kode

”An object that wraps a row in a database table or view, encapsulatesthe database access, and addsdomain logic on that data.”

Page 19: Objektorientering og design av kode
Page 20: Objektorientering og design av kode

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

Page 21: Objektorientering og design av kode

”An object model of the domainthat incorporates both behavior and data”

Page 22: Objektorientering og design av kode
Page 23: Objektorientering og design av kode

Bra

Fristilles i stor grad fra datamodellen

Glimrende til komplekse forretningsregler

Testbarhet

Dårlig

Vanskelig å lære

Høy kostnad for mapping mot databasen

Page 24: Objektorientering og design av kode
Page 25: Objektorientering og design av kode

Er fokuset på operasjoner

=> Transaction script

Er fokuset mer på tabeller av data

=> Table module

Datamodellen ligner databasemodellen

=> Active record

Avansert domenemodell

=> Domain model

Page 26: Objektorientering og design av kode
Page 27: Objektorientering og design av kode

Ser ut som domenemodell

Rik struktur av objekter

MEN – nesten ingen oppførsel i objektene

Logikken styres typisk via Transaction Script.

Page 28: Objektorientering og design av kode
Page 29: Objektorientering og design av kode

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)

Page 30: Objektorientering og design av kode

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

Page 31: Objektorientering og design av kode

Mobil-applikasjoner

Tykke klient-applikasjoner

Tykke internet-applikasjoner

Service-applikasjoner

Web-applikasjoner

Hva har det å si?

Page 32: Objektorientering og design av kode

“A complex system that works is invariably found to have evolved

from a simple system that worked.”