2. NET Framework y POO
• NET Framework esta basado en clases; ofreciendo formas
hereditarias.
BASES DEL POO
1.- HERENCIA 2.- ENCAPSULACION 3.- POLIMORFISMO
3. 1.- HERENCIA
Cualidad de crear clases que estén basadas en otras clases, la nueva clase heredará todas las
propiedades y métodos de la clase de la que está derivada, además de poder modificar el
comportamiento de los procedimientos que ha heredado, así como añadir otros nuevos
EJEMPLO
Tenemos alumnos universitarios. Algunos son alumnos normales, otros Erasmus y otros becarios.
Probablemente tendremos una clase Alumno con una serie de métodos como asistir_a_clase(),
hacer_examen() etc., que son comunes a todos los alumnos, pero hay operaciones que son diferentes en
cada tipo de alumno como pagar_mensualidad() (los becarios no pagan) o matricularse() (los Erasmus que
son estudiantes de intercambio, se matriculan en su universidad de origen).
Lo que debes observar es que con la herencia siempre consigues clases hijas que son una especialización
de la clase padre. Para saber si está correcto emplear herencia entre unas clases y otras, plantéate la
pregunta ¿CLASE HIJA es un CLASE PADRE? (por ejemplo, ¿un perro es un mamífero? ¿Un becario es un
alumno de universidad?)
4. 2.- ENCAPSULACION
Es el proceso de almacenar en una misma sección los elementos de una abstracción que constituyen su
estructura y su comportamiento; sirve para separar el interfaz contractual de una abstracción y su implantación.
Existen tres niveles de acceso para el encapsulamiento, los cuales son:
Público (Public): Todos pueden acceder a los datos o métodos de una clase que se definen con este nivel, este
es el nivel más bajo, esto es lo que tu quieres que la parte externa vea.
Protegido (Protected): Podemos decir que estás no son de acceso público, solamente son accesibles dentro
de su clase y por subclases.
Privado (Private): En este nivel se puede declarar miembros accesibles sólo para la propia clase.
El Ejemplo del Vehículo, Usaremos la característica COLOR.
Contexto 1: Se necesita que cualquiera pueda acceder a el color de un vehículo,
entonces:
Opción a: Declaro entonces COLOR como Privado
Opción b: Declaro entonces COLOR como Protegido
Opción c: Declaro entonces COLOR Como Público
5. El polimorfismo se refiere a la posibilidad de definir múltiples
clases con funcionalidad diferente, pero con
métodos o propiedades denominados de forma idéntica, que
pueden utilizarse de manera
intercambiable mediante código cliente en tiempo de ejecución.
3.- POLIMORFISMO
6. Option Explicit on
Public Class frmRegistroEmpleado_Load(Byval sender As System.Object, Byval e As
System.EventA)
dtpfechaNac.MinDate=DateAdd(DAteInterval.Year, -70, Now)
dtpfechaNac.MaxDate=DateAdd(DAteInterval.Year, 15, Now)
GroupBox1.Enabled= False
btnNuevo.Enabled=True
btnAceptar.Enabled=False
btnNuevo.Focus()
End Sub
Private Sub btnNuevo_Click(Byval sender As System.Objet, Byval e As
System.EventArgs)Handles
txtNombres.Clear()
txtApellidos.Clear()
dtpFechaNac.Value=Now
GroupBox1=Enabled=True
b
7. btnNuevo.Enabled=False
btnAceptar.Enabled=True
txtNombres.Focus()
EEnd Sub
Private Sub btnAceptar_Click(Byval sender As System.Objet, Byval e As
System.EventArgs)Handles
Dim trabajadorAs clsEmpleado
trabajador=New clsEmpleado
trabajador.DefinirDatosPersonales(txtNombres, txtApellidos, dtpFechaNac.Value)
If trabajador.datospersonales_aceptados then
MsgBox(" & trabajador.Nombrecompleto & " registrado)
GroupBox1.Enabled= False
btnNuevo.Enabled=True
btnAceptar.Enabled=False
btnNuevo.Focus()
End If
8. PARTE 2: 17
Private Estado As Integer
Private Empresa As String
Private FechaPlanilla As Date
Private Listaempleados() As clsEmpleado
Private TotslEmpleados As Integer
Private MontoISSS As Decimal
Private MontoRenta As Decimal
Private PlanillaPagar As Decimal
Public Sub New()
Estado=1
Empresa=""
FechaPlanilla=Now
TotalEmpleados=0
End Sub
9. PARTE 2: 17
Public Sub DefinirDatosLaborales(Byval
fechacontrato As Date, Byval sueldoinic As
Decimal)
Dim totalannos As Long
Dim fechinici18 As Date
DatosLaboralesListos=False
If Not DatosComp`letos then
MsgBox("Error: Datos Laborales no aceptados",
MsgBox Style.Exclamation)
MsgBox("Antesde continuar, Revise los Datos
personales", MsgBox Style.Information)
Exit Sub
End If
Sub
Fechainic18=DateAdd(DateInterval.Year, 18,
FechaNacimiento)
Totalannos=DateDiff(DateInterval.Year,
fechacontrato, Now)
Select case fechacontrato
Case Is < fechinic18
MsgBox("Error: Fecha de contrato debe ser
posterior al" & CStr(fechainic18))
Exit Sub
Case Is >Now
MsgBox("Error: Fecha de contrato solo válida solo
entre" + CStr(fechainic18) & " y hoy" & CStr(Now))
Exit Sub
10. Case Else
Fechacontratacion=fechacontrato
End Select
If sueldoinic<=0 then
MsgBox("Error: Sueldo Inicial" & CStr(sueldoinic)& "negativo o cero")
Exit Sub
Else
SueldoBase=sueldoinic
End If
DatosLaboralesListos=True
CalcularSueldoNeto()
End Sub
Public AsignarDescuentos(Optional ByVal ISSS As Decimal=2.5, Optional ByVal renta As Decimal=10.5)
If ISSS>2.5 And ISSS>40 Then
Tasaisss=ISSS
Else
MsgBox("porcentaje de ISSS incorrecto, se usará " & (Str(tasaisss)& "%")
End If
11. If TasaRenta>10.5 And renta<40 Then
TasaRenta=renta
Else
TasaRenta=10.5
End If
End Sub
Public Sub VerSueldos(ByRef sb As String, ByRef sf
As String)
sb=CStr(SueldoBase)
sf=CStr(SueldoFinal)
End
12. PARTE 2: 24
Public Sub AbrirPlanilla(ByVal fechaInicio As Date, Optional ByVal nombreempresa As String= "(sin nombre)")
nombreempresa=nombreempresa.trim
Select Case Estado
Case 1
FechaPlanilla=fechaInicio
If nombreempresa.Length>0 Then
Empresa=nombreempresa
End If
Estado=2
MsgBox("planilla abierta, inicie registro empleados", MsgBoxStyle.Information, "Planilla de" &Empresa&",
APERTURA"&FechaPlanilla.ToString)
Case 2
MsgBox("planilla esta abierta desde" &FechaPlanilla.ToString, Planilla de" & Empresa)
Case 3
MsgBox("planilla creada el "&FechaPlanilla.ToString &"ya se cerró" , MsgBoxStyle.Information, " Planilla de" & Empresa)
End Select
End Sub
13. With cuadro
.Rows.Clear()
.Columns.Add("id","num")
.Columns.Add("now","nombre completo")
.Columns.Add("sb","sueldo base")
.Columns.Add("sf","sueldo neto final")
for i=1 to TotalEmpleados
.Rows.Add()
.Rows(i-1).Cell(2),Value=CStr(1)
.Rows(i-1).Cell(1),Value=Listaempleados(i).nombrecompleto
Call Listaempleados(i).VerSueldos(sb,sn)
.Rows(i-1).Cell(2).Value=sb
.Rows(i-1).Cell(3).Value=sn
Next i
End with
MsgBox("planilla de pago final completa generada en la pantalla!!")
Public ReadOnly Property TotalEmpleados() As String
Get
Return CStr(TotalEmpleados)
End Get
End Property
14. PARTE 2:25
If trabajador.datospersonales_aceptados then
If Not IsNumeric(txtSueldoIni.text) then
MsgBox("Error , sueldo inicial no válido")
Exit Sub
End If
If Not IsNumeric(nudRenta.Value) then
MsgBox("Error , revise la tasa de renta")
Exit Sub
End If
If Not IsNumeric(nudISSS.value) then
MsgBox("Error , revise la tasa de ISSS")
Exit Sub
End If
15. Call trabajador.DefinirDatosLaborales(dtpFechaContrato.Value, CDec(txt.SueldoIni.Text))
If trabajador.datoslaborales_aceptados then
trabajador.AsignarDescuentos(CDec(nudISSS.text), CDec(nudRenta.Text))
Call planillaEPSON.RecibirEmpleado(trabajador)
GroupBox1.Enabled=False
GroupBox2.Enabled=False
btnNuevo.Enabled=true
btnAceptar=False
btnNuevo.Focus()
Else
txtNombres.Focus()
End If
Else
txtNombres.Focus
End If