OOP C#


Övningsuppgift: Virtuellt Zoo med skötare


Övning: Virtuellt Zoo med skötare

Beskrivning:

Utöka den befintliga "Djurparken" med en ny klass för djurskötare. Målet är att förstå hur olika objekt kan interagera med varandra och hur man kan bygga upp komplexa system med hjälp av objektorienterad programmering.

Steg:

  1. Skapa en ny klass ZooKeeper

    • Egenskaper: Name, ExperienceLevel
    • Metoder: FeedAnimals(List<Animal> animals)
  2. Lägg till interaktion mellan ZooKeeper och Animal

    • FeedAnimals-metoden i ZooKeeper-klassen bör loopa igenom listan av djur och "mata" dem. Detta kan representeras genom att ändra en IsHungry-egenskap i Animal-klassen till false.
  3. Lägg till en GUI-komponent för att interagera med ZooKeeper

    • Lägg till en knapp eller en dropdown-meny där användaren kan välja en djurskötare och mata alla djur i parken.
  4. Utöka med fler beteenden

    • Lägg till fler metoder i både Animal och ZooKeeper för att simulera andra interaktioner, som att leka med djuren eller träna dem.

Exempelkod i C# (Windows Forms):

 
// ZooKeeper.cs
public class ZooKeeper { public string Name { get; set; }
public int ExperienceLevel { get; set; }
public void FeedAnimals(List<Animal> animals)
{ foreach (Animal animal in animals) { animal.IsHungry = false; } } }
// Animal.cs (utökad) public class Animal { // ... (samma som tidigare)
public bool IsHungry { get; set; } = true; }
// MainForm.cs (utökad)
public partial class MainForm : Form { List<Animal> animals = new List<Animal>(); List<ZooKeeper> zooKeepers = new List<ZooKeeper>(); // ... (samma som tidigare)
private void btnFeedAnimals_Click(object sender, EventArgs e) { ZooKeeper selectedZooKeeper = // Hämta vald djurskötare från GUI selectedZooKeeper.FeedAnimals(animals);
// Uppdatera GUI för att visa att djuren har matats } }

Denna övning introducerar en ny dimension av objektorienterad programmering och visar hur olika objekt kan interagera i ett större system. Det ger också en bra grund för att diskutera viktiga koncept som komposition och aggregering.

 

"Komposition" och "aggregering" är två begrepp inom objektorienterad programmering som beskriver hur man kan bygga upp komplexa objekt genom att använda enklare objekt. De handlar alltså om relationer mellan olika klasser.

Komposition

I en komposition är ett objekt ägare av ett annat objekt, och det ägda objektet kan inte existera utan sitt ägarobjekt. När ägarobjektet förstörs, förstörs också det ägda objektet.

Exempel: En bil består av en motor. Om bilen förstörs, förstörs också motorn.

 
public class Engine { // Egenskaper och metoder för motorn } public class Car { private Engine carEngine; public Car() { carEngine = new Engine(); } }

Aggregering

I en aggregering är relationen mellan objekten mer lös. Ett objekt kan innehålla eller använda ett annat objekt, men de kan också existera oberoende av varandra.

Exempel: En skola har lärare. Om skolan stängs, kan lärarna fortfarande existera.

 
public class Teacher { // Egenskaper och metoder för läraren } public class School { private List<Teacher> teachers; public School(List<Teacher> existingTeachers) { teachers = existingTeachers; } }

Sammanfattning

  • Komposition: Strikt ägarförhållande. Om ägaren förstörs, förstörs också det ägda objektet.
  • Aggregering: Lösare förhållande. Objekten kan existera oberoende av varandra.

Båda dessa begrepp hjälper dig att strukturera din kod på ett sätt som gör den lättare att förstå och underhålla.

Förenklad text:

Gör en djurskötare till din djurpark

  1. Skapa en ny "Djurskötare"-klass

    • Den ska ha ett namn och erfarenhetsnivå.
    • Den ska kunna mata djuren.
  2. Låt djurskötaren och djuren prata med varandra

    • När djurskötaren matar djuren, blir de inte hungriga längre.
  3. Lägg till en knapp i programmet

    • Använd en knapp för att låta djurskötaren mata alla djur i parken.
  4. Lägg till mer att göra

    • Djurskötaren kan också leka med djuren eller träna dem.

Vad är det här med "komposition" och "aggregering"?

  • Komposition: Tänk dig en bil och en motor. Om bilen försvinner, gör motorn det också.

  • Aggregering: Tänk dig en skola och lärare. Om skolan stänger, finns lärarna kvar ändå.

Dessa idéer hjälper dig att bygga större program med mindre delar.

 
 



Den här sidan designades av 21C: