Skip to content

Commit 24104c4

Browse files
authored
Merge pull request mouredev#4735 from Kenysdev/27.vb
#27 - vb.net
2 parents c9850cc + 13759ca commit 24104c4

File tree

1 file changed

+194
-0
lines changed

1 file changed

+194
-0
lines changed
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
' ╔══════════════════════════════════════╗
2+
' ║ Autor: Kenys Alvarado              ║
3+
' ║ GitHub: https://github.com/Kenysdev  ║
4+
' ║ 2024 - VB.NET                       ║
5+
' ╚══════════════════════════════════════╝
6+
'-----------------------------------------------
7+
'* SOLID: PRINCIPIO ABIERTO-CERRADO (OCP)
8+
'-----------------------------------------------
9+
'- Una entidad de software que está abierta a extensión, pero cerrada a modificación,
10+
' esto significa que debemos poder extender el comportamiento de una clase sin
11+
' necesidad de modificar su código fuente original.
12+
13+
'_______________________________________________
14+
'* EJERCICIO #1
15+
'* Explora el "Principio SOLID Abierto-Cerrado (Open-Close Principle, OCP)"
16+
'* y crea un ejemplo simple donde se muestre su funcionamiento
17+
'* de forma correcta e incorrecta.
18+
19+
Public MustInherit Class Product
20+
Public Property Name As String
21+
Public Property Price As Decimal
22+
23+
Public Sub New(name As String, price As Decimal)
24+
Me.Name = name
25+
Me.Price = price
26+
End Sub
27+
28+
Public MustOverride Function ApplyDiscount() As Decimal
29+
30+
Public Function FinalPrice() As Decimal
31+
Return Price - ApplyDiscount()
32+
End Function
33+
End Class
34+
35+
' Extensión
36+
Public Class ElectronicsProduct
37+
Inherits Product
38+
39+
Public Sub New(name As String, price As Decimal)
40+
MyBase.New(name, price)
41+
End Sub
42+
43+
Public Overrides Function ApplyDiscount() As Decimal
44+
Return Price * 0.05D ' Descuento del 5%
45+
End Function
46+
End Class
47+
48+
' Extensión
49+
Public Class ClothingProduct
50+
Inherits Product
51+
52+
Public Sub New(name As String, price As Decimal)
53+
MyBase.New(name, price)
54+
End Sub
55+
56+
Public Overrides Function ApplyDiscount() As Decimal
57+
If Price > 50 Then
58+
Return 10
59+
Else
60+
Return 0
61+
End If
62+
End Function
63+
End Class
64+
65+
'__________________________
66+
'* EJERCICIO #2
67+
'* Desarrolla una calculadora que necesita realizar diversas operaciones matemáticas.
68+
'* Requisitos:
69+
'* - Debes diseñar un sistema que permita agregar nuevas operaciones utilizando el OCP.
70+
'* Instrucciones:
71+
'* 1. Implementa las operaciones de suma, resta, multiplicación y división.
72+
'* 2. Comprueba que el sistema funciona.
73+
'* 3. Agrega una quinta operación para calcular potencias.
74+
'* 4. Comprueba que se cumple el OCP.
75+
76+
Public MustInherit Class Calculator
77+
Protected a As Double
78+
Protected b As Double
79+
80+
Public Sub New(a As Double, b As Double)
81+
Me.a = a
82+
Me.b = b
83+
End Sub
84+
85+
Public MustOverride Function MathOperation() As Double
86+
87+
Public Sub PrintResult()
88+
Console.WriteLine($"Es: {MathOperation()}")
89+
End Sub
90+
End Class
91+
92+
Public Class Sum
93+
Inherits Calculator
94+
95+
Public Sub New(a As Double, b As Double)
96+
MyBase.New(a, b)
97+
End Sub
98+
99+
Public Overrides Function MathOperation() As Double
100+
Console.WriteLine($"Suma de {a} + {b}:")
101+
Return a + b
102+
End Function
103+
End Class
104+
105+
Public Class Subtraction
106+
Inherits Calculator
107+
108+
Public Sub New(a As Double, b As Double)
109+
MyBase.New(a, b)
110+
End Sub
111+
112+
Public Overrides Function MathOperation() As Double
113+
Console.WriteLine($"Resta de {a} - {b}:")
114+
Return a - b
115+
End Function
116+
End Class
117+
118+
Public Class Multiplication
119+
Inherits Calculator
120+
121+
Public Sub New(a As Double, b As Double)
122+
MyBase.New(a, b)
123+
End Sub
124+
125+
Public Overrides Function MathOperation() As Double
126+
Console.WriteLine($"Multiplicación de {a} * {b}:")
127+
Return a * b
128+
End Function
129+
End Class
130+
131+
Public Class Division
132+
Inherits Calculator
133+
134+
Public Sub New(a As Double, b As Double)
135+
MyBase.New(a, b)
136+
End Sub
137+
138+
Public Overrides Function MathOperation() As Double
139+
Console.WriteLine($"División de {a} / {b}:")
140+
If b <> 0 Then
141+
Return a / b
142+
Else
143+
Throw New ArgumentException("DivisionErrorbyZero.")
144+
End If
145+
End Function
146+
End Class
147+
148+
' Extensión
149+
Public Class Pow
150+
Inherits Calculator
151+
152+
Public Sub New(a As Double, b As Double)
153+
MyBase.New(a, b)
154+
End Sub
155+
156+
Public Overrides Function MathOperation() As Double
157+
Console.WriteLine($"Potencia de {a} ^ {b}:")
158+
Return Math.Pow(a, b)
159+
End Function
160+
End Class
161+
162+
163+
'__________________________
164+
Public Module Program
165+
Public Sub ProcessProduct(product As Product)
166+
Console.WriteLine($"Producto: {product.Name}, Precio final: {product.FinalPrice()}")
167+
End Sub
168+
169+
Public Sub Main()
170+
Dim laptop As New ElectronicsProduct("Laptop", 700)
171+
Dim pants As New ClothingProduct("Pants", 55D)
172+
173+
ProcessProduct(laptop)
174+
ProcessProduct(pants)
175+
176+
'__________________________________________________
177+
' exs 2
178+
Dim Sum As New Sum(2, 2)
179+
Sum.PrintResult()
180+
181+
Dim Subtraction As New Subtraction(2, 2)
182+
Subtraction.PrintResult()
183+
184+
Dim Multiplication As New Multiplication(2, 2)
185+
Multiplication.PrintResult()
186+
187+
Dim Division As New Division(2, 2)
188+
Division.PrintResult()
189+
190+
Dim Pow As New Pow(2, 2)
191+
Pow.PrintResult()
192+
193+
End Sub
194+
End Module

0 commit comments

Comments
 (0)