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.
Skapa en ny klass ZooKeeper
Name
, ExperienceLevel
FeedAnimals(List<Animal> animals)
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
.Lägg till en GUI-komponent för att interagera med ZooKeeper
Utöka med fler beteenden
Animal
och ZooKeeper
för att simulera andra interaktioner, som att leka med djuren eller träna dem.// 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.
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();
}
}
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;
}
}
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.
Skapa en ny "Djurskötare"-klass
Låt djurskötaren och djuren prata med varandra
Lägg till en knapp i programmet
Lägg till mer att göra
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: