La abstracción es el primer pilar que se realiza en el desarrollo de software, es la base de toda programación orientada a objetos, la abstracción es simplemente un acto mental en el que se aísla conceptualmente una propiedad o función concreta de un objeto, básicamente es aislar los elementos de su entorno.
Supongamos que nos encargan desarrollar un sistema de gestión para una agencia inmobiliaria; lo primero que tendríamos que hacer es: Observar, ¿cómo funciona? ¿Qué procesos y transacciones maneja? y toda entidad involucrada.
Por otro lado, la mayoría que inicia en el mundo de desarrollo de software, sabe que para construir un sistema o aplicación, el paso previo es modelar el sistema, conocido como UML (lenguaje de modelado unificado). El modelado del sistema es esencial para el análisis y diseño de sistemas de cómputo, y así reunir todos los requerimientos (en este caso agencia inmobiliaria), con ello logramos un nivel de abstracción superior e infaltable para la documentación del sistema. Además, gracias a la diagrama de clases que se realiza en UML, tendremos la herencia de clases más óptima.
Sin embargo, para proyectos académicos o una práctica simple, no es necesario modelar el sistema de software, tan sólo será necesario tu sentido común en la abstracción.
Aislar elementos (Entidades)
Bien, volviendo al tema y al ejemplo, luego de realizar un previo estudio a la agencia inmobiliaria, tenemos que aislar los elementos.
Los elementos aislados de la agencia inmobiliaria son: obviamente inmuebles, ya que las agencias inmobiliarias se dedican a la venta y alquiler de inmuebles, habrá clientes, empleados, transacciones y entre otras.
- Inmuebles
- Transacciones
- Clientes
- Empleados
- Etc.
Seleccionar características del elemento (Entidad)
Luego de aislar los elementos, debemos de seleccionar todas las características importantes de cada elemento (Entidad), en términos técnicos: Identificar los atributos y comportamientos del objeto, por ejemplo.
Los atributos de inmueble sería: El tipo de inmueble (si es una casa, departamento o un simple terreno), la ubicación, el área, cantidad de dormitorios, el precio y entre otras.
Atributos – Estados
- Tipo de inmueble.
- Ubicación.
- Área de terreno.
- Área construida.
- Cantidad de habitaciones.
- Cantidad de baños.
- Años de antigüedad.
- Precio
Seguidamente identificar los comportamientos del elemento (identificar los métodos del objeto), por ejemplo.
Los comportamientos del inmueble es: se puede vender, alquilar o pre-venta.
Métodos – Comportamientos
- Venta
- Alquiler
- Preventa
Con estos datos de abstracción, ya tenemos una base para crear la clase inmueble orientada a objetos, entonces pasemos este ejemplo a la programación.
Ejemplo C#, VB.NET
- Crearemos un proyecto de nombre agencia inmobiliaria en visual estudio.
- Agreguemos una clase de nombre inmueble.
- Creamos los atributos y métodos.
- Puedes crear los constructores con parámetros si es necesario (opcional).
public class Inmueble { //Estados - Atributos public string tipo; public string ubicacion; public double areaConstruida; public double areaTerreno; public int cantDormitorios; public int cantPisos; public int cantBaños; public double precio; //Comportamientos - Métodos public void vender() { Console.WriteLine(tipo+ " VENDIDA\nMas detalles:"); Console.WriteLine("\tUbicación: " + ubicacion); } public void Alquilar() { Console.WriteLine(tipo + " puesto en ALQUILER\nMas detalles:"); Console.WriteLine("\tUbicación: " + ubicacion); } public void preventa() { Console.WriteLine(tipo + " en PRE-VENTA\nMas detalles:"); Console.WriteLine("\tUbicación: " + ubicacion); } //Constructores public Inmueble() { } public Inmueble(string tipo, string ubicacion, double areaTerreno, double precio) { this.tipo = tipo; this.ubicacion = ubicacion; this.areaTerreno = areaTerreno; this.precio = precio; } public Inmueble(string tipo, string ubicacion, double areaConstruida, double areaTerreno, int cantDormitorios, int cantPisos, int cantBaños, double precio) { this.tipo = tipo; this.ubicacion = ubicacion; this.areaConstruida = areaConstruida; this.areaTerreno = areaTerreno; this.cantDormitorios = cantDormitorios; this.cantPisos = cantPisos; this.cantBaños = cantBaños; this.precio = precio; } }
Public Class Inmueble 'Estados - Atributos' Public tipo As String Public ubicacion As String Public areaConstruida As Double Public areaTerreno As Double Public cantDormitorios As Integer Public cantPisos As Integer Public cantBaños As Integer Public precio As Double 'Comportamientos - Métodos' Public Sub vender() Console.WriteLine(tipo & " VENDIDA" & vbLf & "Mas detalles:") Console.WriteLine("" & vbTab & "Ubicación: " & ubicacion) End Sub Public Sub Alquilar() Console.WriteLine(tipo & " puesto en ALQUILER" & vbLf & "Mas detalles:") Console.WriteLine("" & vbTab & "Ubicación: " & ubicacion) End Sub Public void pr Event Function RaiseEvent () As Console.WriteLine(tipo & " en PRE-VENTA" & vbLf & "Mas detalles:") Console.WriteLine("" & vbTab & "Ubicación: " & ubicacion) End Function 'Constructores' Public Sub New() End Sub Public Sub New(tipo As String, ubicacion As String, areaTerreno As Double, precio As Double) Me.tipo = tipo Me.ubicacion = ubicacion Me.areaTerreno = areaTerreno Me.precio = precio End Sub Public Sub New(tipo As String, ubicacion As String, areaConstruida As Double, areaTerreno As Double, cantDormitorios As Integer, cantPisos As Integer, cantBaños As Integer, precio As Double) Me.tipo = tipo Me.ubicacion = ubicacion Me.areaConstruida = areaConstruida Me.areaTerreno = areaTerreno Me.cantDormitorios = cantDormitorios Me.cantPisos = cantPisos Me.cantBaños = cantBaños Me.precio = precio End Sub End Class
Para probar, crearemos un objeto Inmueble1 e Inmueble 2 a partir de la clase inmueble, definiremos los atributos e invocaremos un método.
static void Main(string[] args) { Inmueble inmueble1 = new Inmueble(); inmueble1.tipo = "Departamento duplex"; inmueble1.ubicacion = "Av Jose"; inmueble1.areaConstruida = 250; inmueble1.areaTerreno = 150; inmueble1.cantDormitorios = 4; inmueble1.cantPisos = 2; inmueble1.cantBaños = 3; inmueble1.precio = 159000.556; inmueble1.vender(); Inmueble inmueble2 = new Inmueble( "Terreno", "Av Argentina", 320, 987521.56); inmueble2.Alquilar();
Shared Sub Main(args As String()) Dim inmueble1 As New Inmueble() inmueble1.tipo = "Departamento duplex" inmueble1.ubicacion = "Av Jose" inmueble1.areaConstruida = 250 inmueble1.areaTerreno = 150 inmueble1.cantDormitorios = 4 inmueble1.cantPisos = 2 inmueble1.cantBaños = 3 inmueble1.precio = 159000.556 inmueble1.vender() Dim inmueble2 As New Inmueble( "Terreno", "Av Argentina", 320, 987521.56) inmueble2.Alquilar() End Sub
Los comentarios están cerrados.