Använd vänsterpil och högerpil för att navigera
Eller Ctrl+P för att skriva ut till PDF (eller på papper)
Lektion 9
Användning av objekt
Utökning av array
- string[] heroes = { "Mario", "Luigi", "Peach" };
- heroes[3] = "Yoshi";
Utökning av lista
- List<string> heroes = new List<string> { "Mario", "Luigi", "Peach" };
- Console.WriteLine(heroes.Count);
- heroes.Add("Yoshi");
- Console.WriteLine(heroes.Count);
- heroes.Remove("Luigi");
- Console.WriteLine(heroes.Count);
Metoder på listor
- List<string> heroes = new List<string> { "Mario", "Luigi", "Peach" };
- heroes.Sort();
- heroes.Reverse();
- int i = heroes.IndexOf("Mario");
Dictionary
Samling med icke-numeriska index
Användning av dictionary
- Dictionary<string, int> limits = new Dictionary<string, int> {
- ["G"] = 20,
- ["VG"] = 40,
- ["MVG"] = 60
- };
- Console.WriteLine(limits["G"]);
- Console.WriteLine(limits["VG"]);
- Console.WriteLine(limits["MVG"]);
- Console.WriteLine(limits.Count);
- limits.Add("Super-MVG", 70);
- Console.WriteLine(limits["Super-MVG"]);
- Console.WriteLine(limits.Count);
Nycklar och värden av objekttyp
- Course programming = new Course { ... };
- Course math = new Course { ... };
- Teacher jakob = new Teacher { ... };
- Teacher robin = new Teacher { ... };
- Dictionary<Course, Teacher> teachersByCourse =
- new Dictionary<Course, Teacher> {
- [programming] = jakob,
- [math] = robin
- };
Loopa över nycklar och värden
- Dictionary<string, int> limits =
- new Dictionary<string, int> {
- ["G"] = 20,
- ["VG"] = 40,
- ["MVG"] = 60
- };
- foreach (string grade in limits.Keys) {
- Console.WriteLine(grade);
- }
- foreach (int points in limits.Values) {
- Console.WriteLine(points);
- }
- foreach (KeyValuePair<string, int> pair in limits) {
- Console.WriteLine(pair.Key);
- Console.WriteLine(pair.Value);
- }
String
Klassen bakom strängar
Metoder på strängar
- string s1 = "Hello world!";
- string s2 = s1.Substring(6, 5);
- string s3 = s2.Replace("l", "k");
- string s4 = s3.ToUpper();
Mutation av strängar
- string name = "Jakob";
- char letter = name[2];
- Console.WriteLine(letter);
- name[2] = 'c';
- Console.WriteLine(name);
Strängar är ej muterbara
- Att "ändra" på en sträng innebär i själva verket att skapa en ny utifrån den gamla
- Varje gång man vill "ändra" på en sträng måste man göra något som liknar följande:
string newString = ... oldString ...
Dokumentation
Hur man lär sig om inbyggda objekt
Objektorienterad analys och design (OOAD)
Strukturera program utifrån objekt
Programstruktur
- Traditionell (imperativ/funktionell) struktur
- Verb med substantiv
- Bestäm vilka beräkningar programmet utför och sedan vilken data som dessa kräver
- Definiera beräkningarna separat från datan
- Objektorienterad struktur
- Substantiv med verb
- Bestäm vilken data som finns i programmet och vilka beräkningar som kan utföras på dessa
- Definiera beräkningarna tillsammans med datan
Näthandel
- En produkt har ett namn och kan vara skrymmande
- En order har en artikellista, en fraktkostnad och en totalkostnad och kan lägga till produkter
Signaturer för produkt och order
- class Product {
- public string Name;
- public bool Bulky;
- }
- class Order {
- public List<Product> Items;
- public double Shipping() { ... }
- public double Total() { ... }
- public void AddItem(Product p) { ... }
- }
Användning av produkt och order
- Order order = new Order {
- Items = new List<Product> {}
- };
- Product tv = new Product {
- Name = "TV",
- Bulky = true
- };
- Product radio = new Product {
- Name = "radio",
- Bulky = false
- };
- order.AddItem(tv);
- order.AddItem(radio);
- Console.WriteLine("Total: " + order.Total());
- Console.WriteLine("Shipping: " + order.Shipping());
Näthandel med lager
- En produkt har ett namn och kan vara skrymmande
- En order har en artikellista, en fraktkostnad och en totalkostnad och kan lägga till produkter
- Ett lager har ett inventarie och kan lägga till och ta bort produkter samt skicka ordrar
Signaturer för lager
- public class Warehouse {
- public Dictionary<Product, int> Stock;
- public void AddProduct(Product p, int amount) { ... }
- public void RemoveProduct(Product p, int amount) { ... }
- public void Ship(Order o) { ... }
- }
- Warehouse warehouse = new Warehouse {
- Stock = new Dictionary<Product, int> {}
- };
- warehouse.AddProduct(tv, 2);
- warehouse.AddProduct(radio, 5);
- warehouse.Ship(order);
Och ännu mer
- Skapa en klass för varje viktigt substantiv i beskrivningen
- Definiera metoder som låter de olika objekten kommunicera
- Vilka klasser och metoder som ska finnas är ett designval
- Inga enkla svar
- För- och nackdelar beroende på omständigheter
- Allting behöver inte vara en klass