En binärfil (.exe eller. dll) som innehåller “managed“ kod.
23
New cards
Vad är det .NET kod kompileras till?
Binärfiler, eller “assemblies“.
24
New cards
Vilka tre delar innehåller en assembly?
1. CIL-kod 2. Metadata 3. Manifest
25
New cards
Vad innebär metadata i .NET?
Det är en fullständig beskrivning av varje typ (klass, interface m.m.) som finns i binärfilen, och varje medlem (fält, metoder, events m.m.) i varje typ.
26
New cards
Vad är manifest i .NET?
Metadata som beskriver själva assemblyn.
Tex assemblyns namn och versionnummer, copyright information, och vilka externa assemblies denna assemblyn behöver.
27
New cards
Vad är CTS?
En specifiktation som beskriver hur typer (class, struct, interface, enum, delegate) måste defineras för att kunna köras i CLR.
Det är namngivna samlingar av abstrakta medlemmar som kan implementeras av en class eller struct.
31
New cards
Vilken konstruktion möjliggörs när en class eller struct implementerar ett interface?
Interface-baserad polymorfism.
32
New cards
Vad är enumerationer?
Namngivna samlingar av namn-värdepar.
33
New cards
Vad ansvarar körtidsmiljön för?
1. Att lokalisera en given assembly på hårddisken 2. Hitta den relevanta typen i assemblyn genom metadata 3. Lägga ut aktuell typ i minnet 4. Kompilera tillhörande CIL till plattformsspecifika instruktioner 5. Utföra säkerhetskontroller 6. Köra de plattformsspecifika instruktionerna
34
New cards
Vad är en namespace?
En grupp av semantisk relaterade typer som finns i en assembly.
35
New cards
Vad står UML för?
Unified Modeling Language
36
New cards
Vad används UML för?
Att beskriva olika aspekter av objektorienterade system. Genom att :
För att säkerställa att vi utvecklar lösningen på rätt sätt.
46
New cards
Vad innefattar construction delen?
Man fokusera på implementationen av designmodellen. Översätta lösningen till kod (tex C#). För att realisera en bra lösning på problemet.
47
New cards
Vad innefattar transition delen?
Överlämning av mjukvaran till de nya ägarna.
48
New cards
Vad är viktigt i analys av en problembeskrivning?
* Vilka begrepp beskriver problemet? * Vilken information används (attribut, fält eller parametrar)? * Vilken relation/samband finns mellan dessa?
49
New cards
När anses ett mjukvarusystem vara komplext?
* Domänen är svår att begripa * Utvecklingsprocessen är svår att hantera * Mjukvaruprogram möjliggör flexibilitet i stor utsträckning * Beteendet utgörs av interaktion mellan diskreta system
50
New cards
Vilka egenskaper har komplexa system?
* En hierarkisk struktur (rankade komponenter) * Primitiva komponenter (tolkning av abstrakt-valbara) * Intra- och inter- komponenter (lätt uppdelning med tydliga gränser) * Gemensamma mönster (tydliga mönster) * Stabilt mellanliggande former (komponenter som är starkt kopplade)
51
New cards
Vilka 4 steg följer man i nedbrytningen av en process?
1. Textanalys (Hitta substantiv och attribut) 2. Identifiera roller 3. Hitta relevanta abstraktion 4. Rangordna abstraktioner i hierarki
52
New cards
Vad är objektorienterad design?
Ett **tankesätt** för att designa objektorienterade system
53
New cards
Vad resulterar en objektorienterad analys (OOA) i?
En domänmodell, dvs klasser med associationer och kardinaliteter
54
New cards
Vad ligger i fokus i objektorienterad design (OOD)?
Klasser och objekt på substantiv från problemdomänen. Riktas mer inpå hur lösningen ska se ut.
55
New cards
Vad innebär objektorienterad programmering (OOP)?
Programkod som består av klasser och objekt, där varje objekt är en instans av en klass (eller en mall)
56
New cards
Vad innebär abstraktion?
Man väljer ut och fokuserar på systemets relevanta komponenter.
57
New cards
Vad innebär inkapsling?
Principen att objekts inre uppbyggnad ska vara ointressant för den som använder objektet i programmering. Allt en programmerare behöver veta är vad objektet kan göra och hur man instruerar objektet att göra.
58
New cards
Vad innebär modularitet?
Det att något är uppdelat i delar (moduler, komponenter), så att det kan tas i sär och sättas ihop på olika sätt.
59
New cards
Vad innebär hierarki?
Mm strukturering av information: med underavdelningar i flera led (i en hierarki). Exempel: katalogerna (mapparna) i ett filsystem, domänerna i internets adressystem DNS.
60
New cards
Vad används undantagshantering till?
Om ett fel inträffar i ett program under körtid, kommer programmet att avslutas på ett okontrollerat sätt.
\ Felet kan hanteras med ett undantag(Exception) och undantagshantering (Exception Handling)
\ Genom att tillämpa undantagshantering, kan man hantera fel som uppstår under körtid så att programmet kan fortsätta sin exekvering eller avslutas på ett kontrollerat sätt.
61
New cards
Vilka fördelar finns med Undantagshantering?
* Den tillåter en metod att kasta ett undantag till dess anropande metod, varpå den anropande metoden kan hantera undantaget. * Utan denna konstruktion, måste en metod antingen hantera felet eller avsluta programmet.
62
New cards
Vad gör undantag inom undantagstyper och undantagshierarkin?
Undantag representerar fel som orsakas av ett program samt av externa omständigheter som kan “fångas“ och hanteras av programmet.
63
New cards
Vad innebär att “Kasta undantag“?
* När en metod upptäcker ett fel, kan metoden skapa en instans av ett lämpligt undantag och kasta den. * En metod kastar ett undantag genom att ange det reserverade ordet “throw“ efterföljt av undantagsinstansen.
64
New cards
Hur fångar man undantag (catching exceptions)?
Undantag fångas genom att använda try…catch block
* Koden som ska kasta undantag, innesluts i ett try block * Varje undantagstyp som skall fångas, anges i ett eget catch block
65
New cards
Vilken information finns i undantag?
Message
* Innehåller meddelandet som beskriver undantaget.
\ StackTrace
* Innehåller information om anropsstacken.
\ ToString()
* Returnerar
66
New cards
Vad för funktioner kan undantag göra?
1. Kasta 2. Fånga 3. Kasta vidare 4. Länka
67
New cards
Vad används ett finally klausal?
Används ihop med try eller try…catch för att skapa ett try…finally block eller ett try…catch…finally block
\ Ett finally block exekveras alltid, oberoende av om undantag kastas eller inte.
68
New cards
Nämn en fördel och en nackdel med undantag…
Fördel:
* Undantagshantering separerar felhanteringen från det normala programflödet, vilket gör det lättare att läsa samt underhålla kod.
\ Nackdel:
* Undantagshantering kräver längre exekveringstid samt fler resurser
69
New cards
När ska man kasta undantag?
* När ett systemfel inträffar * När ett fel inträffar som metoden vet om
\ Om felet kan hanteras i metoden, kasta INTE ett undantag.
70
New cards
När ska man använda undantag?
* Använd undantagshantering i koden för att hantera oförutsedda feltillstånd. * Undvik undantagshantering i koden för att hantera förutsedda feltillstånd.
\ Ex
Använd hellre if… else än try…catch som i bilden.
71
New cards
Namespace System.IO innehåller typer för att?
Manipulera: diskenheter, foldrar och filer
Läsa & skriva till/från
* Filer * Minne * Strängar
72
New cards
Vad måste inkluderas för att kunna använda typerna från namespace System.IO?
System.IO måste inkluderas längst upp i källkodsfilen med nyckelordet “using“.
\ Ex. kolla bild.
73
New cards
System.IO innehåller fyra klasser, vilka och varför?
1. Directory 2. File 3. DirectoryInfo 4. FileInfo
\ Dessa för att manipulera filer samt integrera med datorns filsystem.
74
New cards
Directory och File, ärvs av? och innebär vad?
Ärver från Objekt
\ * Är statiska klasser * Innehåller statiska medlemmar för att skapa, ta bort, kopiera och flytta foldrar/filer.
75
New cards
DirectoryInfo & FileInfo, ärvs av? och innebär?
Ärver från FileSystemInfo
\ * Har liknande funktionalitet som Directory och File men via instansmedlemmar. * Returnerar strängar
76
New cards
Vad för egenskap har DirectoryInfo?
När man har skapat en DirectoryInfo instans, kan man använda de ärvda medlemmerna från FileSystemInfo för att undersöka folderns innehåll.
77
New cards
DriveInfo innehåller vad ?
DriveInfo klassen innehåller en statisk metod DriveInfo.GetDrives() som också listar datorns enheter, men returnerar DriveInfo objekt med detaljerad information.
78
New cards
Vad används DriveInfo till?
Används för att erhålla information om diskenheter.
79
New cards
Vad för skillnader finns mellan textfiler och binärfiler?
* Data som lagras som textfiler kan läsas av en människa via en texteditor. * C# kod lagras i textfiler.
\ * Data som lagras som binärfiler kan inte läsas av en människa via en texteditor. * Binärfiler är designade att läsas av ett program, och processas därför mycket effektivare än textfiler. * C# kompilerad kod kan lagras som bytekod i binärfiler (.dll, .exe)
80
New cards
Vad gör en filpekare?
* Är en speciell pekare, kallad filpekaren, pekar alltid på en viss byte i filen.
* En läs-/skrivoperation utförs alltid för den byte som filpekaren pekar på. * När en fil öppnas, pekar filpekaren på första byten i filen. * När en läs-/skrivoperation utförs, flyttas filpekaren automatiskt fram i filen.
81
New cards
Vad är serialisering?
* Den beskriver processen att konventera ett objekt till en sekvens av bytes som kan skickas till en ström. * All nödvändig information för att återskapa ett objekt serialiseras. * Serialisering leder oftast till mindre kod. * För att en klass ska vara vara seraliserbar måste klassen märkas med attributet \[Seralizable\] (kolla bilden)
82
New cards
Vad gör deseralisering?
Beskriver processen att återskapa ett objekt från en sekvens av bytes som kan tas emot från en ström.
83
New cards
Vad är en Delegate?
I.NET är en delegate en klass som representerar en funktionspekare, och innehåller:
* Adressen av metoden som den anropar * Metodens parametrar * Metodens returtyp
\ * Delegates kan peka på både statiska och instansmetoder * Delagates kan även peka på flera metoder samtidigt, så länge de har samma signatur.
84
New cards
Hur derfinerar man en Delegate?
Defineras med nyckelordet delegate efterföljt av en metodsignatur.
85
New cards
Hur använder man Delegates för bitufuerubgar från ett objekt?
Delegates tillämpas normalt så att ett objekt kan notifiera andra objekt om dess tillståndsförändringar:
\
1. **Definiera** en delegate typ i klassen som används för att notifiera andra objekt. 2. Skapa ett attribut med delegate typen som datatyp i klassen. 3. Skapa en metod i klassen som andra objekt kan använda för att registrera sig (dvs de registrerar en metod som delegaten kan anropa vid tillståndsförändringar). 4. Anropa delegaten i klassen när tillståndsförändringar sker för att notifiera \n registrerade objekt.
86
New cards
Vilka två generiska delegate typerna finns?
1. Action<> 2. Func<>
87
New cards
Varför använder man de två generiska delegate typerna?
För att slippa skriva egen definierade delegates.
88
New cards
Vad innebär nyckelordet Event?
Kan användas för att göra processen mycket simplare och säkrare.
89
New cards
Vad representerar klassen EventArgs?
Ett händelseargument utan någon extra information.
\ Man kan skapa egendefinerade händelseargument genom att ärva från EventArgs.
90
New cards
Hur gör man en “anonym metod“ i C#?
Skapas genom att ersätta metodnamnet med nyckelordet delegate.
91
New cards
Vad är lambdauttryck?
Ännu ett sätt att skriva anonyma metoder på, och på ett ännu simplare sätt att jobba med delegates.
92
New cards
Vad gäller för anonyma typer?
* Programmeraren vet inte namnet på den anonyma typen * Ärver alltid direkt från System.Object * Alla attribut och properties är endast läsbara * Har inga egendefinierade metoder, events, osv. * Går ej att ärva från * Skapas alltid med defaultkonstruktorn
93
New cards
Vad är designmönster?
* Mikroarkitekturer som ofta förekommer i väl designade applikationer. * Ett sätt att återanvända tidigare lösningar på vanligt förekommande problem. * En namngiven beskrivning av ett problem och en lösning som kan tillämpas i olika situationer. * Ett gemensamt språk för vanligt förekommande problem-lösning par. * Myntades av arkitekten Christopher Alexander.
94
New cards
Vad består designmönster huvudsakligen av?
* Ett namn * Ett problem * En lösning * En konsekvens
95
New cards
Designmönster bygger på något eller några koncept, vilka finns?
* Interface * Abstrakta klasser * Arv * Delegering
96
New cards
“GoF” designmönster står för?
“The gang of four“
97
New cards
GoF har 23 designmönster enligt boken, vilka tre kategorier indelas dem i?
Beskriver olika sätt att styra skapandet av objekt.
\ * Abstract Factory \n Förser klienten med en familj av relaterade eller beroende objekt (runtime).
\ * Builder \n Skapar komplexa objekt, uppbyggda av delobjekt som skapas enligt någon algoritm.
\ * Factory Method \n Abstraherar skapelseprocessen av objekt genom att ersätta konstruktorer (runtime).
\ * Prototype \n Instansierar ett nytt objekt genom att klona ett befintligt objekt.
\ * Singleton \n Ser till så att endast 1 instans av en klass skapas.
99
New cards
Vad gör Strukturella mönster?
Beskriver hur klasser och objekt kan kombineras för att bilda större strukturer.
\ * Adapter
Används för att göra en annars inkompatibel klass kompatibel med klienten genom att innesluta den inkompatibla klassen i en kompatibel klass (dvs som implementerar ett interface som klienten kräver).
\ * Bridge
Används för att separera de abstrakta elementen i en klass från implementationen, så att implementationen kan ändras utan att behöva ändra på abstraktionen.
\ * Composite
Används för att skapa hierarkiska, rekursiva strukturer av relaterade objekt, där ett godtyckligt \n element i strukturen kan accessas och användas på vanligt sätt.
\ * Decorator
Används för att utöka eller ändra objekts funktionalitet under körtid genom att innesluta dem i en Decorator klass (alternativ till att använda arv).
\ * Façade
Används för att definiera ett enklare interface till ett mera komplext delsystem.
\ * Flyweight
Används för att minska resursanvändning för komplexa modeller som innehåller många liknande objekt.
\ * Proxy
Används för att skapa en surrogat-objekt, som refererar till ett underliggade objekt, och som implementerar samma interface som det underliggande objektet. Surrogat-objektet vidarebefordrar anrop från klienten till det underliggade objektet vid behov.
\
100
New cards
Vad gör Beteendemönster?
Beskriver olika sätt för klasser och objekt att kommunicera med varandra.
\ * Chain of Responsibility \n Används för att processera data i en pipeline där flera hanterare kan processera datan
\ * Command \n Kapslar in ett kommando, med argument, där kommandot kan exekveras eller sparas.
\ * Interpreter \n Används för att definiera en grammatik för instruktioner som tillhör ett språk.
\ * Iterator \n Används för att skapa ett standardinterface för att traversera en samling objekt.
\ * Mediator \n Används för att minska beroendet mellan klasser som kommunicerar med varandra \n (meddelanden mellan klasserna skickas via ett Mediator objekt).
\ * Memento \n Används för att lagra tillståndet för ett objekt, så att det kan återskapas senare.
\
* Observer \n Används för att tillåta ett objekt att notifiera andra objekt om interna förändringar.
\ * State \n Används för att förändra beteendet av ett objekt då dess inre tillstånd förändras.
\
* Strategy \n Används för att skapa en familj av algoritmer som kan väljas under körtid.
\ * Template \n Används för att definiera stegen i en algoritm, där implementationen kan ändras.
\ * Visitor \n Används för att separera en komplex mängd strukturerad data från funktionaliteten som kan \n utföras på datan som de innesluter.