Skip to content

Expert review 28-3-2024 van Doortje Geuze

K1 Je hebt object georiënteerde software gemaakt die samenwerkt met een database.

OOP

OOP gaat in het kort over het maken van objecten die zowel gegevens als methodes bevatten. OOP heeft meerdere voordelen, een paar hiervan zijn: dat OOP sneller en makkelijker is, OOP zorgt voor meer structuur in de code en OOP zorgt ervoor dat je herbruikbare applicaties te maken in minder tijd.

OOP wordt gekenmerkt door 4 basisprincipes: encapsulation, Abstraction, inheritance en polymorphism.

Encapsualtion

Encapsulation betekent het bundelen van gegevens aan de Class. De functies, variabelen en andere stukken code die in deze class zitten kunnen niet beinvloed worden door anderen classes of buitenstaanders.

 //Special Tile class
    protected readonly Tile tile;
    public SpriteGameObject SpecialTile;
    public SpecialTiles() : base()


    //Special Tile Selected class
    public string SpecialTileLocation { get; set; }
    public string SessionId { get; set; }

    public string UserId { get; set; }

    public string RoomId { get; set; }

    public SpecialTileSelected() : base()


    //GameState: Draw Special Tile functie
    private void DrawSpecialTiles()

// in tile.cs
private const float TileWidth = 72.5f;
private const float TileHeight = 72.5f;

Abstraction

Abstraction gaat om het makkelijker maken van de code door minder belangrijke details weg te laten, hierdoor kan je focusen op de belangrijke dingen en wordt de code makkelijker leesbaar.

/checks whether the mouse is inside the collision box (image) of a card
public bool CardMouseCollision(Vector2 Mouse)
{
    return card.BoundingBox.Contains(Mouse);
}

Inharitance

Inharitance betekend dat een niewe class gemaakt woord uit een al bestaande class. Bij de code hieronder neemt de child class de eigenschappen over van de parent class.

 //Special Tile class
    class SpecialTiles : GameObjectList

    //Special Tile Selected class
    public class SpecialTileSelected : DataPacket

Polymorphism

Polymorphism betekend dat een geinharited class de main class overwrite

Hier onder staat de abstracte class:

public abstract class Card : GameObjectList
{
    //rest van code
    public virtual void CardUsed(int TileX, int TileY, string TileID,  
    Piece OccupyingPiece)
    {
        Console.WriteLine("Card used");
        Gamestate.cards.Remove(card);
    }
}

Hieronder staat de inharited class:

public class ObstacleCard : Card
{
    //rest van code
    public override void CardUsed(int TileX, int TileY, string TileID, 
    Piece OccupyingPiece)
    {
        Console.WriteLine("ObstacleCard used");
        CreateObstacleTiles(TileX, TileY, TileID);
        Gamestate.Remove(card);
        SendCardUsedData();
    }
}

UML diagram

Voor dit project heb ik nog geen UML gemaakt.

Database

Voor de Databas is er eerst een EER model gemaakt. Dit model bied een visuele representatie van onze database. In het model staan vershillde tabelen die aan elkaar zijn gelinkt. In de tabellen staan primary keys, foreign keys en andere waarden.

Tussen de tabelen stan verschillende lijnen dit zijn de relaties tussen de tabbelen. De relaties zijn: one, many, one and only one, zero or one, one or many en zero or many.

in de afbeelding hier onder staan de relaties uitgebeeld.

EER-relaties

EER

Verder is de EER erg groot, nu bied hij alle aspecten van de game en is hij dus best groot. Dit bied enkelen voordelen en nadelen.

Voordelen:

  • De hele game is compleet weergegeven in 1 database
  • Alle relaties tussen de vershillende aspecten zijn in een keer te zien

Nadelen:

  • De database is lastig te realiseren omdat hij zo groot is
  • Het ophalen en opslaan van de data zal minder precies gaan doordat de data erg groot is.

Ook is er een conectie gemaakt voor de database:

EER

K3 Je hebt een infrastructuur ontworpen en gebouwd volgens de gegeven specificaties.

Infrastructuur

Ik heb zelf nog geen JSON paket gemaakt die berichten verstuurd en ontvangd

Dit is een voorbeeld van iemand anders in mijn groepje

public class SpecialTileSelected : DataPacket
    {
        public string SpecialTileLocation { get; set; }
        public string SessionId { get; set; }

        public string UserId { get; set; }

        public string RoomId { get; set; }

        public SpecialTileSelected() : base()
        {
            EventName = "SpecialTileSelected";
        }
    }

Berichtverzending:
//GameState
    SpecialTileSelected specialTileSelected = new();
    specialTileSelected.SpecialTileLocation = $"{NewSpecialTile.Position}";
    SocketClient.Instance.SendDataPacket(specialTileSelected);
    Console.WriteLine("SpecialTile selected = " + specialTileSelected.SpecialTileLocation);

Netwerk diagram

Verder heb ik een netwerk diagram gemaakt van het project. een netwerkdiagram is een visuele voorstelling van een computer- of telecommuncatienetwerk (luchidchart.com)

Netwerk-Diagram

Sequence diagram

Ook is er een sequence diagram gemaakt voor dit project om de flow van data visueel te maken.

Bronnen


Last update: April 2, 2024