Intro til C# apps
Arkitekturen i computere & historisk udvikling +
grundlggende begreber i C#1Arkitekturen i computere & historisk
udvikling
UML-klassediagram & C#Erklring af metode m.
parameterVrdityper vs. reference typer Initialisering af objekter
m. konstruktrerTal af typen floating-point & decimalSimple
typer i C#
Steen Jensen, efterr 2013
Fra mainframes til personlige computere (PC)Computere startede
med mainframes - store maskiner, som fyldte et stort rum og kostede
i hundredtusindvis af dollars
Gradvist kom minicomputere mindre, masseproducerede computere
til titusindvis af dollars
I 1971 producerede Intel den frste microprocessor
(computerchip):Frte frst til hobbycomputere (Sinclair, Commodore 64
.)I 1980erne:De frste PCere dukkede op (IBM kloner)Man skelnede
dengang mellem workstations (srligt kraftige til typisk
videnskabelige forml) og almindelige PCere
Nu ogs embeddede processorer sm computere med simple
microprocessorer indbygget i husholdningsmaskiner, biler etc.
2Computerens elementerEn computer kan opdeles i forskellige
fysiske elementer:CPU (udfrer instruktioner i en cyklus styret af
clockfrekvens)Hovedhukommelse / indre lager: computerchips udgr
RAMSekundr lager: harddisk, CD/DVD-drevYdre enheder (tastatur, mus,
skrm, printer )
Download ProcessorSim fra http://jamesgart.com/procsim/
Tryk p Start Simulation
I vinduet Control Panel kan du nu trykke p Start Execution
Prv ogs at trykke p Step og flg afviklingen stepvist
Prv ogs at se de lbende ndringer i vinduerne Registers samt
Instruction Memory
3Udviklingen i computerchipsComputerchips bestr af elektroniske
kredslb formindsket og tset ned i plader fremstillet af
silicium
Nye teknikker bliver stadig fremstillet for at kunne presse
stadig flere kredslb ned p samme plade
Kredslb udvikler meget varme kling ndvendig
Fremtiden byder p quantum og molecular computing, hvor man
bevger sig ned i elektron- / molekylestrrelse
4Udviklingen i operativsystemerFra kommandostyrede (DOS) til
grafiske brugergrnseflader
Fra ekspertstyret til allemandseje
Proprietre OS (Microsoft Windows, Mac OS ) vs. open source
(Linux etc.)
5Netvrk Lokale netvrk LAN = local area network
WAN = Wide area network
Internettet = netvrk af mange WANs
Trdlse netvrk: Wi-Fi
6Computer softwareComputersoftware er en fllesbetegnelse for
programmer, der kan afvikles p en computer
Forskellige kategorier:Forretning & personligt:
tekstbehandling, regneark
Videnskab & ingenirarbejde: simulering af vejr, CAD
Internet & samarbejde: browsere, email, Facebook, udnyttelse
af uudnyttede computerressourcer hos brugere (fx SETI@home
projektet, hvor der analyseres kmpe mngder af data fra
radioteleskoper for at finde tegn p liv i rummet)
Spil & underholdning: casual games, 3D-spil
7Historisk udviklingFra EDB (elektronisk databehandling) til
IT
Databaser fra hierarkiske til netvrksdatabaser til
relationsdatabaser. Nu ogs objektorienterede databaser
Fra procedural programmering til eventstyret programmering til
objektorienteret programmering
En sammenhrende verden: internettet, e-handel (e-commerce),
sociale netvrk, ubiquitous computing
8Erklring (eng.: declaration) af klasse & oprettelse (eng.:
instantiation) af objekt af klasseEksemplet kan ses i fig. 4.1 +
4.2 s. 147+149 i bogen og findes ogs i de downloadede kodeeksempler
i mappen ch04 og undermappen fig04_01_02
Nr en klasse erklres, skal der angives en skaldt access
modifier, der angiver egenskabers (properties) og metoders
tilgngelighed for andre metoder i appen her angives normalt
public
Hvis en metode ikke returnerer nogen information, angives
void
Metodenavne navngives normalt som udsagnsord, og klasser som
navneord
En statisk metode (i Main) er speciel, da den kan kaldes uden
frst at skabe et objekt af klassen
For at skabe et objekt af en klasse benyttes new
9Generel opbygning af UML-klassediagramDiagrammet er opbygget af
tre dele
Den verste del bestr af klassens navn
Den midterste del bestr af klassens attributter, hvilket svarer
til instansvariable og egenskaber i C#
Den sidste del bestr af klassens operationer, hvilket svarer til
metoder i C#
10
Erklring (eng.: declaration) af metode m. parameterEksemplet kan
ses i fig. 4.4 + 4.5 s. 151+152 i bogen og findes ogs i de
downloadede kodeeksempler i mappen ch04 og undermappen
fig04_04_05
En metode kan benytte en eller flere parametre for at kunne
udfre sin opgave
Et metodekald giver vrdier (ogs kaldet argumenter) til hver af
metodens parametre
Nr en metode benytter parametre, angives en type og et navn for
hver parameter
11
NB! omvendt rkkeflge i forhold til C#Instansvariable (eng.:
instance variables) og egenskaber (eng.: properties)Eksemplet kan
ses i fig. 4.7 + 4.8 s. 155+158 i bogen og findes ogs i de
downloadede kodeeksempler i mappen ch04 og undermappen
fig04_07_08
Variable knyttet til en klasse kaldes instansvariable (eng.:
instance variables) og erklres indenfor klassen, men udenfor
klassens metoder
Hvert objekt har sin separate instans af disse variable
En klasse har normalt en eller flere egenskaber (eng.:
properties), der kan manipulere disse instansvariable
Generelt defineres metoder og egenskaber som public, mens
instansvariable defineres som private
At erklre instansvariable som private kaldes ogs for information
hiding eller encapsulation
Egenskaber (properties) indeholder skaldte accessors, som
hndterer at lse og ndre klassens instansvariable
12UML-klassediagram med en egenskab (property)Da en
instansvariabel opfattes som en implementationsdetalje, medtages
normalt instansvariable ikke i et UML-klassediagram13
Automatisk implementerede egenskaber (eng.: auto-implemented
properties)Eksemplet findes i de downloadede kodeeksempler i mappen
ch04 og undermappen fig04_07_08_auto-impl-properties
C# giver mulighed for at benytte automatisk implementerede
egenskaber (eng.: auto-implemented properties)
Dette betyder, at C# compileren skaber instansvariabel med
tilhrende set/get accessors
For at f en liste over skaldte code snippets, trykkes Ctrl + k,
Ctrl + x (alternativt kan man ogs hjreklikke i editorvinduet og
vlge Insert snippet)
Auto-implemented properties findes i code snippets under
prop
14Vrdityper (eng.: value types) vs. reference typer Typer i C#
kan opdeles i to kategorier:Vrdityper (eng.: value
types)Referencetyper (eng.: reference types)
Simple typer i C# er alle vrdityper (int, double etc.)
En variabel af vrditypen indeholder simpelthen en vrdi
En variabel af referencetypen indeholder derimod en adresse i
hukommelsen p, hvor den refererede variabel er gemt
f.eks.:GradeBook myGradeBook = new GradeBook();15Initialisering af
objekter m. konstruktrer (eng.: constructors)Eksemplet kan ses i
fig. 4.12 + 4.13 s. 163+164+165 i bogen og findes ogs i de
downloadede kodeeksempler i mappen ch04 og undermappen
fig04_12_13
En klasse kan angive en konstruktr (eng.: constructor), som kan
bruges til at initialisere et objekt af en klasse, nr objektet
oprettes
C# krver et kald til en konstruktr, nr et objekt oprettes
Den tomme parentes efter f.eks. new GradeBook() indikerer et
kald uden argumenter til klassens konstruktr p denne mde giver
compileren en default konstruktr til alle klasser, ogs selv om der
ikke eksplicit er angivet nogen konstruktr
Hvis man nsker selv at anvende en konstruktr, skal denne have
samme navn som klassen
En konstruktr skal ikke angive nogen return type
16UML-klassediagram med en konstruktr (constructor)Konstruktrer
angives normalt fr de almindelige metoder i et
UML-klassediagram17
velse modificering af fig. 4.12Lav velse 4.10 s. 178 i VC#2012
bogen
Du/I m meget gerne lave velsen som pair programming, hvor I
hjlpes ad I kan f.eks. skiftes til at vre leder og sekretr
Hvis du/I har problemer, s prv frst at vende det med det andet
par i jeres gruppe, fr I rkker hnden op og beder mig om hjlp18Tal
af typen floating-point & decimalEksemplet kan ses i fig. 4.15
+ 4.16 s. 167+169+170 i bogen og findes ogs i de downloadede
kodeeksempler i mappen ch04 og undermappen fig04_15_16
C# benytter tre typer af decimaltal:floatdoubledecimal
Float og double kaldes for floating-point typer gemmer tilnrmede
vrdier, mens decimal prcise vrdier
Decimal bruges som regel til belb
Decimaltal (f.eks. 7.33) behandles som double som udgangspunkt
disse kaldes floating-point literals
En decimal literal: f.eks. 7.33m eller 7.33M (m/M = money)
19Oversigt over simple typer i C#20
Self-review velser i grundlggende C#-begreberPrv at besvare
velse 4.1-4.4 p s. 176 177 uden at se svarene
Check derefter dine svar op imod svarene s. 177n 178
21velse i C# apps med brug af grundlggende begreberResten af
dagen + torsdag: Lav velse 4.11-4.16 s. 178-179 i VC#2012 bogen
Implementer use case(s) fra Spejder system
Du/I m meget gerne lave velsen som pair programming, hvor I
hjlpes ad I kan f.eks. skiftes til at vre leder og sekretr
Hvis du/I har problemer, s prv frst at vende det med det andet
par i jeres gruppe, fr I rkker hnden op og beder mig om hjlp22