Kezdőoldal » Számítástechnika » Programozás » Üdv, olvastam az Open Close...

Üdv, olvastam az Open Close principle elvről, elméletben értem is, de valamiért nem tudom kipróbálni!?

Figyelt kérdés

private void button1_Click(object sender, EventArgs e)

{

Rectangle rc = new Rectangle();

rc.Width = 50;

rc.Height = 50;

CombinedAreaCalculator cac = new CombinedAreaCalculator();

cac.Area(); //itt mit kell átadni?

}

public class Rectangle

{

public double Width { get; set; }

public double Height { get; set; }

}


public class CombinedAreaCalculator

{

public double Area(object[] shapes)

{

double area = 0;

foreach (var shape in shapes)

{

if (shape is Rectangle)

{

Rectangle rectangle = (Rectangle)shape;

area += rectangle.Width * rectangle.Height;

}

if (shape is Circle)

{

Circle circle = (Circle)shape;

area += (circle.Radius * circle.Radius) * Math.PI;

}

}

return area;

}


És ezen alapulna az egyszerűsítés, hogy külön osztályokat hozunk létre a különböző alakzatoknak:


public abstract class Shape

{

public abstract double Area();

}

public class Rectangle : Shape

{

public double Width { get; set; }

public double Height { get; set; }

public override double Area()

{

return Width * Height;

}

}


public class Circle : Shape

{

public double Radius { get; set; }

public override double Area()

{

return Radius * Radius * Math.PI;

}

}


public class Triangle : Shape

{

public double Height { get; set; }

public double Width { get; set; }

public override double Area()

{

return Height * Width * 0.5;

}

}

public class CombinedAreaCalculator

{

public double Area(Shape[] shapes)

{

double area = 0;

foreach (var shape in shapes)

{

area += shape.Area();

}

return area;

}

}


Viszont már az első verziót sem tudom használni, mert a gomlenyomás event-be nem tudom meghívni a függvényt! valaki tudna segíteni?


2018. márc. 21. 16:26
 1/4 anonim ***** válasza:
Tedd fel Pastebin-re vagy hasonlóra, mert így olvashatatlan!
2018. márc. 21. 16:42
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Itt van a kód, részletes magyarázattal: [link]

Nem tudom mi kell még.

2018. márc. 21. 17:46
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:

"cac.Area(); //itt mit kell átadni?"

Shape tömböt, ahogy láthatod a függvény definícijóában is.

Habár ezt a rakás osztályt az osztályban dolgot nem tudom hogy sikerült összehoznod.

2018. márc. 21. 17:47
Hasznos számodra ez a válasz?
 4/4 sharkxxx ***** válasza:

CombinedAreaCalculator cac = new CombinedAreaCalculator();

double area = 0;

Rectangle rc = new Rectangle();

Circle cir = new Circle();

Triangle tri = new Triangle();

rc.Width = 50;

rc.Height = 50;

cir.Radius = 100;

tri.Height = 60;

tri.Width = 90;

//area = cac.Area(); // Itt mit kell átadni?

Shape[] shapes = {rc, cir, tri};

area = cac.Area(shapes); // Itt egy olyan tömböt kell átadni, ami

// olyan objektumokat tartalmaz, amelyeknek az osztálya a Shape

// osztályból van származtatva.

Console.WriteLine("Total area of all shapes: {0}", area);

2018. márc. 21. 18:07
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!