Skip to content

Commit dd24bdb

Browse files
authored
Merge pull request mouredev#4888 from Kenysdev/28.vb
#28 - vb.net
2 parents 8d72191 + b15900b commit dd24bdb

File tree

1 file changed

+152
-0
lines changed

1 file changed

+152
-0
lines changed
+152
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
' ╔══════════════════════════════════════╗
2+
' ║ Autor: Kenys Alvarado              ║
3+
' ║ GitHub: https://github.com/Kenysdev  ║
4+
' ║ 2024 - VB.NET                       ║
5+
' ╚══════════════════════════════════════╝
6+
'-------------------------------------------------
7+
'* SOLID: PRINCIPIO DE SUSTITUCIÓN DE LISKOV (LSP)
8+
'-------------------------------------------------
9+
' - Cualquier objeto de una subclase debe comportarse de manera consistente con los objetos de
10+
' la clase base, cumpliendo con los contratos definidos por la interfaz de la clase base.
11+
12+
13+
Public MustInherit Class ClassBase
14+
Public MustOverride Sub MethodBase()
15+
End Class
16+
17+
Public Class SubClass1
18+
Inherits ClassBase
19+
20+
Public Overrides Sub MethodBase()
21+
Console.WriteLine("SubClass1")
22+
End Sub
23+
End Class
24+
25+
Public Class SubClass2
26+
Inherits ClassBase
27+
28+
Public Overrides Sub MethodBase()
29+
Console.WriteLine("SubClass2")
30+
End Sub
31+
End Class
32+
33+
'__________________________
34+
'* EJERCICIO
35+
'* Crea una jerarquía de vehículos. Todos ellos deben poder acelerar y frenar, así como
36+
'* cumplir el LSP.
37+
'* Instrucciones:
38+
'* 1. Crea la clase Vehículo.
39+
'* 2. Añade tres subclases de Vehículo.
40+
'* 3. Implementa las operaciones "acelerar" y "frenar" como corresponda.
41+
'* 4. Desarrolla un código que compruebe que se cumple el LSP.
42+
43+
' ____________________________________________________
44+
' Clase Base
45+
Public MustInherit Class Vehicle
46+
' Propiedades
47+
Public ReadOnly Property Brand As String
48+
Public ReadOnly Property Model As String
49+
50+
' Constructor
51+
Public Sub New(brand As String, model As String)
52+
Me.Brand = brand
53+
Me.Model = model
54+
End Sub
55+
56+
' Métodos abstractos
57+
Public MustOverride Function Accelerate() As String
58+
Public MustOverride Function Brake() As String
59+
End Class
60+
61+
' ____________________________________________________
62+
' Clase derivadas
63+
Public Class Car
64+
Inherits Vehicle
65+
66+
Public Sub New(brand As String, model As String)
67+
MyBase.New(brand, model)
68+
End Sub
69+
70+
Public Overrides Function Accelerate() As String
71+
Dim properties As String = $"{Brand} - {Model}"
72+
Return $"Acelerando auto: {properties}"
73+
End Function
74+
75+
Public Overrides Function Brake() As String
76+
Dim properties As String = $"{Brand} - {Model}"
77+
Return $"Frenando auto: {properties}"
78+
End Function
79+
End Class
80+
81+
' ____________________________________________________
82+
Class Motorcycle
83+
Inherits Vehicle
84+
85+
Public Sub New(brand As String, model As String)
86+
MyBase.New(brand, model)
87+
End Sub
88+
89+
Public Overrides Function Accelerate() As String
90+
Dim properties As String = $"{Brand} - {Model}"
91+
Return $"Acelerando Motocicleta: {properties}"
92+
End Function
93+
94+
Public Overrides Function Brake() As String
95+
Dim properties As String = $"{Brand} - {Model}"
96+
Return $"Frenando Motocicleta: {properties}"
97+
End Function
98+
End Class
99+
100+
' ____________________________________________________
101+
Public Class Truck
102+
Inherits Vehicle
103+
104+
Public Sub New(brand As String, model As String)
105+
MyBase.New(brand, model)
106+
End Sub
107+
108+
Public Overrides Function Accelerate() As String
109+
Dim properties As String = $"{Brand} - {Model}"
110+
Return $"Acelerando Camión: {properties}"
111+
End Function
112+
113+
Public Overrides Function Brake() As String
114+
Dim properties As String = $"{Brand} - {Model}"
115+
Return $"Frenando Camión: {properties}"
116+
End Function
117+
End Class
118+
119+
' ____________________________________________________
120+
Public Module Program
121+
Public Sub Main()
122+
' Exs 1
123+
124+
Dim TrySubClass1 As ClassBase = New SubClass1
125+
Dim TrySubClass2 As ClassBase = New SubClass2
126+
127+
TrySubClass1.MethodBase()
128+
TrySubClass2.MethodBase()
129+
130+
'_____________________________________________
131+
' Exs 2
132+
133+
Dim Car As Vehicle = New Car("Honda", "Civic")
134+
TestSubClass(Car)
135+
136+
Dim Motorcycle As Vehicle = New Motorcycle("Kawasaki", "Ninja")
137+
TestSubClass(Motorcycle)
138+
139+
Dim Truck As Vehicle = New Truck("Ford", "Raptor")
140+
TestSubClass(Truck)
141+
142+
End Sub
143+
144+
Public Sub TestSubClass(SubClass As Vehicle)
145+
Console.WriteLine(vbCrLf + "Propiedades:")
146+
Console.WriteLine($"{SubClass.Brand} - {SubClass.Model}")
147+
148+
Console.WriteLine(vbCrLf + "Métodos:")
149+
Console.WriteLine(SubClass.Accelerate())
150+
Console.WriteLine(SubClass.Brake())
151+
End Sub
152+
End Module

0 commit comments

Comments
 (0)