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

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

    Materialer generelt:

    Litteratur:

    Object-Oriented Programming with C# (findes på GitHub her)
    Getting Started
    Programming - Part I
    Programming, Part II
    Object-Oriented Programming, Part I

    Razor pages: PART 1: Razor Pages


    Opgaver:

    Razor Pages: RazorPages_Exercises.docx
    Unsolved exercise projects (Razor Pages - VS2019)
    Solved exercise projects (Razor Pages - VS2019)


    Online kurser:

    LinkedIn learning (Lynda.com) - Gratis adgang; tilmeld med EASJ e-mail konto: https://www.lynda.com/email-signup (SWC Lynda.com Playlist)
    MS Academy: C# Fundamentals for absolute beginners
    Nemprogrammering.dk (c# - kursus på dansk)
    SoloLearn.com
    .NET Academy: https://dotnetcademy.net/Learn/2045/Pages/1


    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

    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

    Online kursus med quizzes:
    SoloLearn.com

    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.
    Bemærk, at funktionen skal defineres (skrives) uden for kroppen af MyCode() funktionen, dvs efter public void MyCode{ ... }.
    Funktionen skal være public og void, og skal tage alle dine varable der beskriver en film, som paramertre.
    Omstrukturerer (refaktorerer) MyCode( ) funktionen, så alle Console.WriteLine sætningerne der udskriver film-information flyttes til PrintMovie(...). Kald PrintMovie(...) fra MyCode( ).
    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

    37-38

    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 vist i klassen :
    MovieManager.zip

    Program vist i klassen:
    PersonClassTest.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)

    39-40

    Programming - Part II

    Control statements
    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)

    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

    41 Ikke planlagt endnu (Buffer)    
    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:
    EventMakerRazorPagesV2.zip
    ItemRazor.zip

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

     

    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

    47

    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)

     

    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: tirsdag 20/12 kl. 16.00
    DEMO-dag onsdag 21/12



    Projektoplæg

     

    51-
    Læse "ferie"
      Til repetition brug:
    Big Mamma (pizzaria) UML1 og UML2
    Media System
    Fartkontrol.pdf
    Træningsopgave.docx
      Unit test - flyttet til 2. semester ??


    LinkedIn.com/learning