Coder Social home page Coder Social logo

kristofferrisa / ooad-exam Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 25.02 MB

Exam in Object-orient analyze and design 2017 at USN.

License: MIT License

HTML 74.41% CSS 11.17% JavaScript 14.42%
exam norwegian object-oriented school uml uml-diagrams usn

ooad-exam's Introduction

Hi, I'm Kristoffer 👋

  • 🔭 I'm currently engaged in several exciting domains:
    • Bitcoin: Exploring and learning the fundamental principles behind Bitcoin as a tool for secure, decentralized payment systems and their impact on society. And how Bitcoin works as a decentralized project and the basics of its software design.
    • Language Models (LLMs): Exploring the capabilities and applications of large language models.
    • Agent Development: Innovating with Autogen and other frameworks to create intelligent, responsive agents.
    • Automation: Utilizing n8n to streamline workflows and processes.
    • Monitoring: Implementing OpenTelemetry for robust, scalable system monitoring.
  • 📖 Currently reading: "The Beginning of Infinity" by David Deutsch. A book so insightful, I recommend reading it multiple times!
  • 🤔 Seeking collaborators for Flaggtider.no and hallonabo.no to help take these projects to the next level!
  • 🗒 Every day student of Bitcoin.

📫 Contact me

ooad-exam's People

Contributors

kristofferrisa avatar pnitram avatar unnilehhn93 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

ooad-exam's Issues

Objektdiagram

Objektdiagram

Objektdiagrammer viser hvilke klasser som er instansiert på ulike tidspunkt. Ett objektdiagram viser ett tidspunkt. Vi kan si at objektdiagram er et øyeblikksbilde av et kjørende system. (Holmstedt, s. 102)

I vårt diagrammer ser du tilstanden til systemet ved last inn og lagre. Vi har valgt å vise dette med samme diagram og ved bruk av dummyfilen "test.svg", dette fordi tilstanden ikke fraviker stort ved disse to operasjonene. Hvis tilstanden hadde vært "lagre som" så ville for eksempel filnavnet bli endret.

Tidsdelingsdiagram

Tidsdelingsdiagram

Diagrammet viser hvordan objektenes tilstand endres over tid og hvordan de påvirker hverandre. To objekter som skifter tilstand, kan være utsatt for begrensinger i forhold til rekkefølgen eller i forhold til hvor lang tid det bør gå mellom hvert skifte.

I SVG animering så er det meste sekvensielt, men siden vi legger til rette for å addon og 3.parts integrasjon i form av å lese og skrive SVG filer blir det viktig å ha et slikt diagram for å vise eksterne hvordan det gjøres av våre interne objekter. Diagrammet er også hensiktsmessig å ha ved potensielle feilsøkings situasjoner eller ved utforming av ny funksjonalitet.

Timing diagrams are very similar to sequence diagrams. They represent the behavior of objects in a given time frame. If it’s only one object, the diagram is straight forward.

uml-diagram-types-examples/#TimingDiagram

Klassediagram

Klassediagram

Klassediagrammer viser klasser, interface, eller programmersgrensesnitt, og hvordan de henger sammen. Denne strukturen er forutsetningen for at klassene kan samarbeide om bestemte oppgvaer i systemet. (Holmstedt, s. 101)

Systemet er modellert etter "Layers" mønsteret og hvor layers betyr lagdeling , og hvor det øverste laget er det som er mest applikasjonsspesifikk (Holmstedt, s. 272). Vi har valgt å benytte en trelags arkitektur med presentasjonslaget SvgUI, teknisk lag SvgCore og et domenelag SvgAddon.

"En arkitektur basert på veldefinerte lag fører til en god praksis for bygging av informasjonssystemer" (Holmstedt, s. 272).

I pakken SvgUI ser man at MainView implementerer interfacet "IFilbehandler" for å ha mulighet til å for å få data fra objekter i klassen Disk når dataene er klare. Dette er av og til nødvendig i GUI-komponenter for å hindre at komponenter løser resten av brukerområdet og gir følelsen av å miste kontroll (Holmstedt, s.277).

DesignView, XmlView og ForhåndsvisningsView, er alle spesialiseringer av MainView med hvert sitt ansvarsområde, som er å vise "kodemodus", "desigmodus" eller vise forhåndsvisning.

SvgCore er det tekniske laget. Med klassene SvgAnimering og interfacet IFilbehandler. Laget inneholder også klasse for å håndtere vedlikehold av programmet, som oppdateringer.

SvgAddon er det nederste laget, og som er minst applikasjonsspesifikk. Laget har ansvar skriving/lesing/kommunikasjon med disk, sky og database.

Kommunikasjonsdiagram

Kommunikasjonsdiagram

Kommunikasjonsdiagram tilhører et av de fire interaksjonsdiagrammene i UML 2.0. Dette diagrammet står nært sekvensdiagram, som også omfavnes i dette forslaget. Disse diagrammene er isomorfe, som betyr at innholdet i det ene kan vises i det andre. Oppgaven til et kommunikasjonsdiagram er å vise de viktigste samarbeidende objektene for et bestemt brukstilfelle. Vi har spesifisert en nærmere del av et bruksmønster, hvor en bruker først ønsker å legge til og fjerne en animering. Denne brukeren tar også nytte av "toggleDesignAndXmlView", fordi h*n ønsker å bare jobbe rett inn i XML. Deretter lagrer brukeren filen. Kommunikasjonsdiagram hjelper til med å skape en god oversikt, og kan gi annen forståelse enn sekvensdiagram. (side 214)

http://creately.com/blog/diagrams/uml-diagram-types-examples/#SequenceDiagram

Bruksmønster diagram (Use Cases)

Use cases

Bruksmønsterdiagrammer omtales og som use case. Dette er en av sju diagramtypene som viser de dynamiske sidene i systemet (Holmstedt, 2004). Use case beskriver de funksjonelle kravene til systemet, det vil si hvordan systemet responderer på eksterne hendelser og hvem som kan brukse systemet.

Vi har valgt å illustrere systemets dynamiske side ved bruk av use case fordi dette diagrammet er såpass alminnelig og inuativt forståelig for alle parter. Diagrammet er svært egnet som et samarbeidsdokument mellom systemutviklererene og kunden eller domneeksperten (Holmstedt, 2004)

UML diagram over nettsiden

Skal vi være litt kreative å lage et diagram over nettsiden vi skal lage for innleveringen? Eller er det overkill?

Pakkediagram

Pakkediagram

Et pakkediagram samler flere ting under et felles navn. Pakkediagrammer viser flere pakker og forbindelser mellom dem. Fowler [2004] Skriver blant annet at pakker tilsvarer pakker i Java og navneområder i C++ og .NET. (Viggo, s. 108 og 109.)

I vårt pakkediagram viser vi forholdene til de 3 pakke som er blitt laget for å understøtte bassis funksjonalitet og GUI komponenter i SVG animeringsprogrammet.

Pakkediagrammet støtter også en 3-lags arkitektur ved med GUI på toppen og domene/forretningslag i CORE og til slutte finnes det tekniske laget i ADDON klassen. ** Det ligger også noe teknisk lag i CORE.

kan noen sjekke min usecase?

Kan noen se over usecasen som er laget? Er usikker på eksportere til 3.part er riktig, og om det ikke skal være forretningsbrukstilfelle med på eksportere og importere fra tredjepart. Tror ikke det?

Komponentdiagram

En komponent viser strukturer og avhengigheter mellom en gruppe med komponenter. Komponenter er utskiftbare, kjørbare og selvstendige enheter som yter en eller annen form for tjeneste i et system

Aktivitetsdiagram

Aktivitetsdiagram

Et aktivitetsdiagram brukes til å beskrive hvilken rekkefølge en bruker eller et objekt må utføre aktiviteter i for å gjennomføre en bestemt prosess. Dette er en av sju UML-diagrammer som kan vise de dynamiske sidene i systemet.

Det er naturlig for å oss å inkludere et aktivitetsdiagram når vi allerede har bruksmønsterdiagram. Ofte er det et brukstilfelle som er utgangspunktet for aktivitetsdiagrammet. Bruksmønsterdiagrammet sammen med aktivitetsdiagrammet gir oss et godt bilde av hvordan systemet kan utnyttes, samt funksjonene som kan finnes her.

Tilstandsdiagram

Tilstandsdiagram

Tilstandsdiagram vise et objekts liv, deler av livet eller hele objektets livshistorie, samt hva som må til for at objektene endrer tilstand en til en annen. Dette er typisk for GUI styrte programmer. (178)

Vi har laget en tilstandsmaskin ved hjelp av et tilstandsdiagram. Det vi ønsker å vise er de forskjellige tilstandene systemet vårt innebærer. Diagrammet viser til en hver tid hvilke tilstand systemet befinner seg i, og hva som må til for å endre denne tilstanden, og hvilken tilstand objektet går over til. (side 178)

Programmet startet i tilstanden "av", for at denne tilstanden skal endres må en brukes starte programmet. Dette fører til en tilstand hvor programmet automatisk søker etter oppdateringer og laster disse ned hvis det ikke er noen feil. Programmet ender opp i en tilstand hvor det "venter på input fra bruker". Her kan brukeren laste inn en SVG fil, som gjør at programmet går inn selve SVG redigerings verktøyet. Videre tilstander viser diagrammet under.

Kilder
http://creately.com/blog/diagrams/uml-diagram-types-examples/#StateMachDiagram

https://www.uml-diagrams.org/bank-atm-uml-state-machine-diagram-example.html

Sammensatt strukturdiagram

Sammensatte strukturdiagram

Sammensatte strukturdiagram (composite structure diagram) er en av de mest betydningsfulle nyhetene i UML 2.0 ifølge Fowler[2004].

Diagrammer for sammensatt struktur er også beslektet med sekvensdiagrammer og kommunikasjons diagrammer fordi de berører samarbeidet, men de berører ikke meldingsforløp i det hele tatt, kun strukturen i samarbeidet.

http://creately.com/blog/diagrams/uml-diagram-types-examples/#CompStrDiagram
https://www.uml-diagrams.org/composite-structure-diagrams.html

Sekvensdiagram

Sekvensdiagram

  • Dette gjelder for både kommunikasjons- og sekvensdiagram
  • Huske å refere fra boken til Viggo
  • Legge til en liten forklaring av selve diagrammet? En slags walktrough.

Det er totalt 4 interaksjonsdiagrammer i UML 2.0, sekvensdiagram er et av dem. Dette diagrammet står nært et annet viktig interaksjonsdiagram som heter kommunikasjonsdiagram. Disse diagrammene er isomorfe, som betyr at innholdet i det ene diagrammet kan vises i det andre. Selv om disse diagrammene viser den samme informasjonen, har de som oppgave å gi forskjellig forståelse av samarbeidet som blir analysert
(Holmstedt, 2015).

Et sekvensdiagram blir ofte brukt i designfasen, for å knytte et brukstilfelle til en konkret gruppe med objekter og vise hvordan de samarbeider (Holmstedt. 2015). I vårt tilfelle har vi en bruker som skal utføre et par oppgaver ved hjelp av vårt SVG-redigeringsprogram. Sekvensdiagrammet gir mest verdi når samarbeidet begynner å komplisert. Det vi mener er at hvis en programmerer begynner å miste oversikten, eller sliter med å finne logiske feil kan man vende tilbake til sekvensdiagrammet. Dette gjøres fordi det kan være lettere å sette lys på spesifikke programmeringsproblemer eller oppdage glemte detaljer ved hjelp av en modell. (side 213)

Vårt brukstilfelle er ikke veldig komplisert, men vi valgte fortsatt å ta med både sekvens- og kommunikasjonsdiagrammene for å hjelpe programmererne, og skape en bedre forståelse. I tillegg er sekvensdiagrammet svært nærme den utførbare koden, så det å ha et godt diagram når man skal skrive kode kan bidra til å skape god kvalitet på programkoden. (side 213)

http://creately.com/blog/diagrams/uml-diagram-types-examples/#SequenceDiagram

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.