doggelito skrev:
webForum har kategorier, trådar, inlägg, användare, kalender, inställningar, mailfunktioner, meddelandefunktioner, sök m.m.
Vilken klass skulle med fördel ärva en annan?
Av just de exempel som du har gett här, har jag svårt att se att någon skulle ärva någon annan i ditt exempel.
Jag tror du stirrar dig blind på felsaker, ett objekt är som ett substantiv, om du kan sätta en/ett/flera framför saken så kan du även göra det till ett objekt.
När man sedan kommit så långt så kan man börja tita på vilka egenskaper ett objekt skall ha, ta en artikel i en webshop.
Den skall ha ett pris, den skall ha ett artikelnummer och ett namn, den kanske skall tillhöra en kategori, och därmed har vi fått en relation mellan detta objekt och vårt kategoriobjekt. Den kanske skall ha en bild.
Jag har dock svårt att se att den borde ärva från något, eller att något skall ärva från denna artikel. Däremot så kanske du skapar 2 olika webbutiker som mycket påminner om varandar, bara att i den ena webbutiken så skall artikeln ha med en egenskap som heter 'Beskrivning' som inte finns i den andra webbutiken. Här kan man nu börja ana vinsten med ärv, här kommer en kort förklaring.
webbutik1.
public class Product{
public string Name;
public int Price;
public string Number;
}
Till denna butik har vi byggt ett affärslager som kan ta alla produkter och lägga samman summan av dessa och få tillbaka totalen.
public int TotalPrice(List<Product> products)
{
...
return totPrice;
}
Om vi nu börjar bygga den andra webbutiken och där har vår produkt som även skall ha en egenskap som heter beskrivning.
public class Product{
public string Name;
public int Price;
public string Number;
public string Description;
}
Vi vill även här kunna lägga ihop alla produkter och få fram ett totalpris.
Vi kan skapa ett nytt affärslager där vi skriver en ny TotPrice() metod, eftersom den endast tar emot en Product från webbutik1, så kommer vår Product från webbutik2 inte fungera om vi försöker skicka in en lista med sådan till metoden, eftersom dessa 2 ligger i olika assembliers.
Den man kan göra här nu för att ÅTERVINNA vår TotPrice() metod är att vi skapar en bas produkt klass
public class BaseProduct{
public string Name;
public int Price;
public string Number;
}
och även en ny Product för respektive webbutik som ärver från vår BaseProduct
public class ProductForShop1 : BaseProduct {
}
public class ProductForShop2 : BaseProduct {
public string Description;
}
Vi kan nu skapa ETT affärslager som tar emot basprodukten och räknar fram totalpricet för alla produkter.
public int TotPrice(List<BaseProduct> products)
{
....
return totPrice;
}
Här har vi alltså använt OO för att kunna minimerar koden som vi skriver för att kunna leverera 2 webbutiker med olika krav på hur produkten behöver se ut.
Nu kanske just TotPrice() var ett dåligt exempel, men du kan applicera det på det mesta i din webbutik. För varje order så kommer du ha en orderrad, denna orderrad skall bestå av din produktnummer, antal, pris, mm.. Här kan vi också skriva EN affärslogik metod för att hanterar detta även om vi har 10 olika produkter, så länge de alla ärver från BaseProdukt, och BaseProdukt innehåller den information som vi behöver för att fylla OrderRaden.
- M