Henrik Høltzer (heho)
Software Construction - SWC 1.1 1D

Semester: 1.sem., efterår 2023
Email: heho@zealand.dk

Materialer generelt:

Litteratur:

Object-Oriented Programming with C# (findes på GitHub her)
Du kan hente alle materialerne som een stor .zip fil (klik på Code-knappen, og vælg Download ZIP).
Du kan også bruge en GitHub-klient (et program til at hente filer fra GitHub) kaldet GitHub Desktop (hentes på https://desktop.github.com).
Du kan - naturligvis - kun hente filer på denne måde, du kan ikke selv lægge filer op på Per Lauersens GitHub-repository

Razor pages: PART 1: Razor Pages


Online kurser:

LinkedIn learning - Gratis adgang; tilmeld med Zealand e-mail konto: https://www.linkedin.com/learning/activate
Microsoft kursus "C# first steps": http://docs.microsoft.com/da-dk/learn/paths/csharp-first-steps/
MS Academy: C# Fundamentals for absolute beginners
NemProgrammering (C# programmering for begyndere - kursus på dansk): https://www.nemprogrammering.dk/Tutorials/c-sharp/programmerings-kursus.php
SoloLearn: http://www.sololearn.com
.NET Academy: https://dotnetcademy.net/CSharp


Videoer:

Razor Pages, Github mm


Andet:

Opgave Oversigten (Task Completion Sheet SWC 1.1)

Bemærk - ugeplanen er foreløbig og vil ændres undervejs!

Uge Emner Materialer Opgaver
35

Velkommen til Datamatiker-studiet!

Generel intro til Zealand og studiet

 

Overblik over Software Construction

 

Introprogram
Introduktion til Zealand og studiet

IT-vejledninger

Studieordning

 
36-37

Start
Værktøjer og Materialer
I gang med Visual Studio Enterprise 2022


Programming - Part I

Code organisation
Types
Variables
Type conversion
Simple I/O
Arithmetic
Logic
Functions

Litteratur: Getting Started (s.2 - 22)

Visual Studio Enterprise 2022
Du får licens-nøgle fra Azure Dev Tools (tidligere Microsoft Imagine)

Slides:
SoftwareTools.pptx
IT

HW

SW

Noter:
Programming - Part I (s. 2-19)

Slides:
TypesVariables.pptx
ArithmeticConversion.pptx
Logic.pptx
Functions.pptx

Start.1 (Getting Started s. 22)
Pro1.1 - Pro1.4 (Programming - Part I, s. 20-22)

Ekstra opgave: (PrintMovie - funktion)
Tag udgangspunkt i opgave Pro1.1 (MovieManagerV05).
Lav en ny funktion PrintMovie( ..) der kan udskrive alle dine informationer om en film.
Funktionen skal være void (dvs ikke have enogen returværdi), og skal tage alle dine varable der beskriver en film, som paramertre.
Omstrukturerer (refaktorerer) din kode, så alle Console.WriteLine sætningerne der udskriver film-information flyttes til PrintMovie(...) og kald PrintMovie(...).
Prøv evt at ændre på dine film-oplysninger (fx title="XXX") og kald PrintMovie( ..) igen.

Opgave: (SoloLearn)
Gennemfør Basic Concepts delen på: SoloLearn.com

38-39

Object-Oriented Programming - Part I

What is OO?
Creating objects
Reference-type vs. value-type
Using properties and methods
Class definitions
Class collaboration
Static classes and methods

Litteratur: Object-Oriented Programming, Part I (s. 3-38)


Slides:
ObjectsClasses.pptx
ClassDefinition.pptx
ClassCollaboration.pptx
Static.pptx

Program lavet i klassen :
PrintMovie.zip
LegoGame.zip

Program vist i klassen:
PersonClassTest.zip
MovieManager.zip


Ekstra opgave: (LilleOpgave)
1) Lav et program der kan tage et heltal som input og fortælle om det er et et negativt tal, et positivt tal eller nul.
2) Lav et andet program der tager to heltal som input og kan fortælle hvilket af dem der er størst.

Løsning: LilleOpgave.zip

Ekstra opgave: (CalculatePrice - svær opgave)
Der ønskes en metode der kan beregne prisen på en ny "oplevelses-event".
For af udnytte faciliteterne mest (benyttes adfærdsregulerende pris) dvs prisen skal beregnes på baggrund af:
Grundpris, aldersrabat, studierabat, sesson, tid på dagen og grupperabat mm

Conditions:
Grundpris: 100 kr
Aldersrabat og studiekort:
Børn u. 3år: gratis
Børn o.2år u.13år: halv pris
Unge o. 16år med studiekort: 20 % rabat
Pensionist o. 67år: 40% rabat
Sesson:
Lavsesson (jan, feb): 20 % rabat
Højsesson (maj-august): 20% tillæg
Time:
Mellem 8-10: 10 % rabat
Mellem 15-20: 10% tillæg
Gruppe rabat:
Antal 10-19: 10% rabat
Antal o. 19: 15% rabat

løsning: CalculatePrice.zip

OOP.1.1 - 1.7 (Object-Oriented Programming, Part I, s. 40-46)

Ekstra opgaver:
OOP.1.8 - 1.9 (Object-Oriented Programming, Part I, s. 47-48)

40-41

Programming - Part II

Control statements

  • if
  • else
  • switch
  • while
  • for


Debugging
Data structures

  • Array
  • List
  • Dictionary

Code Quality (keeping code DRY)

Litteratur: Programming, Part II (s.3-46)

Slides:
ConditionalStatements.pptx
RepetitionStatements.pptx
Debugging.pptx
Lists.pptx
Dictionary.pptx
Enumerations.pptx
DRY.pptx

 

Bemærk, hvis du har svært ved C# og døjer lidt med de engelske gloser, findes der noget materiale på dansk her:

Nemprogrammering.dk (c# - kursus på dansk)

Program lavet i klassen :
TestIfWhile.zip
PersonTest.zip Nyt!

Ekstra opgave: (Class Fly)
Implementer klassn Fly - helt fra grunden i et nyt consol-project.
Klassen Fly skal have følgende:
Instansfelter: _xPosition, _yPosition, _xSpeed, _ySpeed og _flyId.
Konstruktører: Fly(string) og Fly(string, double, double, double, double)
Properties: FlyId(readonly), XPosition, YPosition, XSpeed, YSpeed
Metoder: Move(), Accelerate(), Decelerate(), Stop(), Turn(double, double)

Move() skal opdatere _xPosition og _yPosition ved at addere _xSpeed og _ySpeed til positionerne. Accelerate() og Decelerate() skal opdatere _xSpeed og _ySpeed med en fast procentsats fx 10%. Stop() sætter _xSpeed og _ySpeed til 0. Turn(double, double) gopdatere _xSpeed og _ySpeed med nye værdier.

Test klassen Fly ved at oprette Fly-objekter i Main() og kalde metoderne på objekterne.
(Brug Console.WriteLine() til at udskrive flydata før og efter hvert metodekald.)

Hvis du har mod på vektorregning eller er en ørn til cosinus og sinus er du velkommen til at beregne de nye værdier i stedet for at parameteroverføre de nye værdier :)

Løsning: FlyClass.zip (kode fra klassen)

Kode fra klassen:
TemperatureMeasurementArray.zip (Array)
KundeListe.zip (List)
KundeListe(2).zip (ver.2 - nu med Dictionary)

Opgave: BookCatalog

Obligatorisk opgave i SWD/SWC: UML1 - (Big Mamma, PizzaStore)

Pro.2.1 - Pro.2.9 (Programming - Part II, s. 47-55)
Pro.2.13 - Pro.2.14 (Programming - Part II, s. 59-60)

Ekstra opgaver:
Pro2.10-Pro2.12, Pro2.15

42 Efterårsferie   Opgave: WoodPelletsShop (Part 1)
Løsning: WoodPelletShop.zip
43-44

Object-Oriented Programming - Part II

Composition/Inheritance
Object construction
Overriding properties/methods
Polymorphic behavior
Abstract methods and classes
Interfaces

 

 

Litteratur: Object-Oriented Programming, Part II (s. 3-15)

 

Slides:
InheritanceFundamentals.pptx
InheritanceAbstract.pptx
InheritancePoly.pptx
InheritanceObject.pptx
InheritanceInterfaces.pptx


Bob Tabor Video (Inheritance)

LinkedIn.com/learning videoserie I

LinkedIn.com/learning videoserie II

Opgaver:
Begreber2 if og løkker

EjendomsMægleren

OOP.2.1 - 2.6 (Object-Oriented Programming, Part II , s. 47-52)
ISpeak


Obligatorisk opgave i SWD/SWC: UMLII - (Big Mamma, Pizzaria)

Opgave:
Læs og Løs exercises i .NET Academy: https://dotnetcademy.net/Learn/2045/Pages/1

 

Kode fra klassen:
EstateAgency.zip (Ejendomsmægler)
WolfPack.zip

45

Exceptions







Bemærk:
Unit test er rykket til 2. semester

Litteratur: Object-Oriented Programming, Part II (s. 16-20)

Slides:
Exceptions.pptx


Bob Tabor Video (Exceptions)

LinkedIn.com/learning 

Opgaver:
OOP.2.8 (Object-Oriented Programming, Part II , s. 54)
ExceptionsObjektVsRef.docx
MyStack


Kode vist i klassen:
CarExceptionTest.zip
MyStack.zip
ExceptionTest.zip
ItemExceptionTest.zip

46

ASP.Net Core / Razor Pages

Build your first application
Razor Pages architecture
Model Binding
Implementing :

  • Read operation
  • Create operation

Server side Validation

Singleton Design pattern

Razor Pages
RazorPages_Tutorial
: PART 1: Razor Pages

  • Chapter 4
  • Chapter 5
  • Chapter 6
  • Chapter 7
  • Chapter 8

Bemærk: Skip afsnitet om Singleton design pattern i kapitel 8 !!!!

Videoer (Mohammad El Allali):
Model Binding:

Validation-Singleton-Dependency injection:


Razor Pages Arkitektur illustrationer:

RazorArchitecture.docx
RazorArchitecture(Req-Res).docx

Slides :

Exercises (ItemsRazor)

ItemsRazorPages (1. opgave i serien ItemsRazor)
CreateNewItems (2. opgave i serien ItemsRazor)

Solutions (ItemsRazor)
ItemRazorV1.zip (Løsning til opgave 1)
ItemRazorV2.zip (Løsning til opgave 2)

 

Kode vist i klassen:
EventMakerRazorPagesV3.zip

CarRazorPages.zip (kode fra klassen d. 17/11)


Ekstra:
Exercises (Razor Pages)

Løs følgende opgaver fra RazorPages_Exercises.docx
RazorPage1.0
RazorPage2.0

  • Part1
  • Part2

RazorPages3.0

Bemærk: Du finder start projekter og løsninger her:
Unsolved exercise projects (Razor Pages - VS2019)
Solved exercise projects (Razor Pages - VS2019)


UML II - Big Mamma Pizzeria - Minimum løsningsforslag: NYT!
DCD: UML2SimpelDCD.pdf
Code: BigMammaUML2Simple.zip


UML II - Big Mamma Pizzeria - Udvidet løsningsforslag: NYT!
DCD: UML2udvidetV2.vsdx (Design Class Diagram - visio)
DCD: UML2UdvidetV2.pdf (som PDF)
SD: UML2_Sequence-Diagram_PizzaMenuCard_SearchPizza().vsdx
SD: UML2_Sequence-Diagram_PizzaMenuCard_SearchPizza().pdf
SD: UML2_Sequence-Diagram_Order_CalculatePrice().vsdx
SD: UML2_Sequence-Diagram_Order_CalculatePrice().pdf
Code: BigMammaUML2.zip

Kode vist i klassen:
PizzaMistakes.zip Nyt!

7

ASP.Net Core / Razor Pages (fortsat)
Routing with Razor Pages
Implementing :

  • Update operation
  • Delete operation
  • Filter operation

Razor Pages (fortsat)
RazorPages_Tutorial
: PART 1: Razor Pages

  • Chapter 9
  • Chapter 10

Videoer (Mohammad El Allali):
Routing:

  • Video 10
  • Video 11
  • Video 12


Razor Pages Arkitektur illustrationer:

RazorArchitecture(Service).docx

Slides :

Exercises (ItemsRazor)
ValidationSearchFilterItems (3. opgave i serien ItemsRazor)
EditDeleteItems (4. opgave i serien ItemsRazor)
JsonIconImageBootstrapItems (5. opgave i serien ItemsRazor)

Solutions (ItemsRazor)
ItemRazorV3.zip (Løsning til opgave 3)
ItemRazorV4.zip (Løsning til opgave 4)
ItemRazorV5.zip (Løsning til opgave 5)

Design Class Diagram (DCD) til ItemRazorV5: NYT!
ItemRazorV5_DCD.vsdx
ItemRazorV5_DCD.pdf

Ekstra:
Exercises (Razor Pages)

Løs følgende opgaver fra RazorPages_Exercises.docx
RazorPage4.0
RazorPage5.0

  • Part1
  • Part2

RazorPage6.0

  • Part1
  • Part2

Bemærk: Du finder start projekter og løsninger her:
Unsolved exercise projects (Razor Pages - VS2019)
Solved exercise projects (Razor Pages - VS2019)


48-50 Projektarbejde

Aflevering: Onsdag 20/12 kl. 16.00
DEMO-dag Torsdag 21/12



Projektoplæg

 

51-
Læse "ferie"
  Til repetition brug:
Big Mamma (pizzaria) UML1 og UML2
Media System
Fartkontrol.pdf
Træningsopgave.docx
4 Prøve: 22-23. januar 2024 Eksamensliste (Tidsplan)

Til repetition brug (flere tidligere prøveopgaver): Nyt!
ZealandClimate.pdf | løsningsforslag
TilmeldingsSystemet.pdf | løsningsforslag
LivperiodeSystemet.pdf
BålhytteBooking.pdf | løsningsforslag
BadetidsSystemet.pdf | løsningsforslag

  Unit test - flyttet til 2. semester ??


LinkedIn.com/learning