PDF de programación - Fundamentos de Programación Orientada a Objetos

Imágen de pdf Fundamentos de Programación Orientada a Objetos

Fundamentos de Programación Orientada a Objetosgráfica de visualizaciones

Publicado el 9 de Febrero del 2019
2.612 visualizaciones desde el 9 de Febrero del 2019
425,0 KB
35 paginas
Creado hace 1a (24/11/2017)
Fundamentos de Programación Orientada Objetos

Tabla de contenido

Introducción
Antes de empezar
Conceptos Básicos
Características de POO
Contratos
Tipos
Herencia y Composición
Polimorfismo
Bonus Tracks

0
1
2
3
4
5
6
7
8

2

Fundamentos de Programación Orientada Objetos

Prefacio

Con el objetivo de generar un entendimiento compartido y un lenguaje con significados
comunes entre los miembros de los equipos de desarrollo, en Graion nos hemos abocado a
la tarea de recopilar, editar, escribir y curar el contenido de lo que consideramos necesario
conocer y comprender para cualquier desarrollador o desarrolladora de software, que
trabaje con lenguajes de programación, para lograr que siente sus bases sobre los
conceptos de la programación orientada a objetos.

Así también, consideramos que uno de nuestros objetivos, al momento de escribir este
texto, es que el mismo sirva como material de consulta para toda aquella persona que
quiera comprender los conceptos fundamentales del paradigma.

Si bien explicaremos los conceptos del paradigma de objetos como tema central, también
cubriremos una diversidad de conceptos que no son exclusivos de esta forma de diseño de
software pero que sí consideramos importante entender para comprender conceptos
relacionados.

Introducción

3

Fundamentos de Programación Orientada Objetos

Antes de empezar

Acerca del material
Como bien se sabe, en Internet existe una basta cantidad contenidos sobre POO, sin
embargo, consideramos muy útil que las personas se sienten a revisar, mejorar y generar
nuevos contenidos.

Es muy probable que se encuentren definiciones parecidas a las de otras bibliografías, ya
que para generar este material consultamos muchos libros y apuntes de facultades y
también, a escritores independientes de blogs.

Nuestro objetivo no es lucrar con este libro, sino simplemente devolver algo a la comunidad
de desarrollo que tanto nos ha dado.

Acerca del lenguaje
A lo largo de este libro se muestran diferentes ejemplos de código, los mismos se
encuentran en un lenguaje ficticio que decidimos crear por varios motivos.

En primer lugar, para evitar inclinarnos por un lenguaje en particular, buscando con esto
no expresar ninguna preferencia por parte de los autores.
Por otro lado, también se busca generar abstracciones, sin preocuparnos por las
implementaciones de cada lenguaje y mostrar un pseudocódigo que permita hacer foco
sobre los conceptos tratados.
Finalmente, el utilizar este lenguaje inventado, brinda más flexibilidad para generar los
ejemplos.

Confiamos que luego de que el lector entienda los conceptos, busque la forma de
implementarlos en el lenguaje que utiliza para trabajar o, simplemente, que es de su
agrado.

Como leer este libro

Existen dos maneras que sugerimos usen para leer este libro.

Antes de empezar

4

Fundamentos de Programación Orientada Objetos

A aquellos que se estén iniciando en el paradigma, les sugerimos leer el libro completo y sin
saltar capítulos. Ya que para comprender un tema, primero se deben conocer los conceptos
que se tocaron secciones anterior.

A los lectores que ya tengan conocimiento sobre la programación orientada a objetos,
pueden simplemente consultar los capítulos que contienen los temas que desean ver en
particular.

Antes de empezar

5

Fundamentos de Programación Orientada Objetos

Conceptos Básicos

Comenzemos este camino interminable de aprendizaje con los conceptos básicos de POO
(Programación Orientada a Objetos) y a medida que avanzemos vamos a ir tocando temas
más complejos.

Objetos

¿Qué es un objeto?

La definición más básica dice: "Es un ente computacional que puede contener datos y
comportamientos".

EJ: un usuario, una persona o un número entero. Cada uno de estos objetos tienen un
comportamiento propio.

EJ: una persona puede comer/caminar/programar/atacar. Por lo tanto, un objeto lo podemos
definir formalmente como: Ente computacional que exhibe un comportamiento.

Mensaje

Todos los objetos de los cuales hablamos tienen comportamientos y se relacionan con otros
objetos (se piden cosas entre ellos). Por cual podemos definir a un mensaje como:

Interacción entre dos objetos: un emisor E y un receptor R. Un emisor le envía un mensaje
a un receptor. El emisor puede obtener o no una respuesta.

Ej: caminar, pelear, comer, atacar.

Ciclo de vida de un objeto

Todos los objetos tienen una vida, se puede decir que nacen cuando son instanciados y
mueren cuando se los elimina de la memoria.

No obstante, existen dos formas de eliminar de memoria a un objeto dependiendo del
lenguaje de programación. Los mecanismos se llaman Garbage Collector y los
Destructores.

Conceptos Básicos

6

Fundamentos de Programación Orientada Objetos

Garbage Collector: es un mecanismo que se encarga de borrar de la memoria las
referencias a objetos y entidades que ya no se usan más, de manera que se pueda
maximizar el uso del espacio en memoria.

Destructores: son métodos que se definen para cada objeto y cuyo principal objetivo es
liberar los recursos que fueron adquiridos por el objeto a lo largo de su ciclo de vida y
romper vínculos con otras entidades que puedan tener referencias a él.

Métodos
¿Que es un método? ¿Qué diferencia existe con un mensaje?

Un método es la sección de código que se ejecuta al enviar un mensaje. Se identifica con
una firma, que es la misma firma del mensaje enviado. Entonces, cuando un objeto recibe
un mensaje, se ejecuta un método cuya firma es la misma que la del mensaje.

Ejemplo:

method comer(Tarta tarta){
calorias += tarta.calorias
}

La firma de un objeto se define con tres componentes:

1. El nombre del método.
2. Los parámetros que recibe el método.
3. Lo que devuelve el método (que puede ser nada u otro objeto).

Clases

Muchos lectores se preguntarán porque no empezamos con la definición de Clase. Esto se
debe a que las clases solo son una forma de implementar objetos, pero no son la única
manera de hacerlo (como veremos más adelante), por lo que fundamental que no
pensemos automaticamente en clases cuando hablamos de objetos. Sin embargo, la mayor
parte de los lenguajes de programación que usamos laboral y académicamente usan
clases. Por eso vamos a tratarlas en este libro.

¿Qué es una clase? Buena pregunta.

Podemos definir a una clase utilizando dos definiciones complementarias: Una clase es un
molde, a partir del cual se crean los objetos. Cuando instanciamos un objeto, el
ambiente le pregunta a dicha clase que características y métodos tiene que tener el objeto

Conceptos Básicos

7

Fundamentos de Programación Orientada Objetos

que vamos a instanciar.

La otra definición es: Una clase es un ente que determina el comportamiento y el tipo al
que pertenecen sus instancias.

Ejemplo de código:

class Persona {
public attribute calorias
public method comer(Tarta tarta){
self.calorias += tarta.calorias
}
}

class Tarta{
public attribute calorias
}

class ComidasTests{
method ComerTartaTest (){
var caloriasDespuesDeAlmorzar = 600
Persona alan = new Persona()
alan.calorias = 500
Tarta tartaJamonYQueso = new Tarta()
tartaJamonYQueso.calorias = 100
alan.comer(tartaJamonYQueso)
Assert.AreEqual(caloriasDespuesDeAlmorzar,alan.calorias)
}
}

Prototipos
La orientación a objetos basada en prototipos es un estilo de reutilización de
comportamiento (herencia*) que se logra por medio de la clonación de un objeto ya
existente, que sirve como prototipo. Javascript, es el lenguaje orientado a objetos basado
en prototipos más conocido.

Autoreferencia

Así como un objeto puede conocer a otro objeto teniendo una referencia hacia este,
también se puede conocer a sí mismo. Cualquier objeto tiene una auto-referencia,
denominada this o self (según el lenguaje) para poder mandarse algún mensaje a si mismo.

Conceptos Básicos

8

Fundamentos de Programación Orientada Objetos

Así como el self, hay otra referencia, denominada super o parent la cual es equivalente al
this o self, con la particularidad de que le dice al Method LookUp “empezá desde 1 más
arriba”. Es decir, que no busca la implementación en la clase donde está ejecutando el
método, sino en la inmediata superior. (puede que eso desemboque en que siga subiendo
niveles) En el 99% de los casos, sólo deberíamos llamar a super/parent para ejecutar el
mismo método que estamos ejecutando (En algunos casos, como Ruby, el lenguaje mismo
nos lo restringe). Es decir:

class Gato {
method caminar(){
super.caminar() //No debería hacer, por ejemplo, super moverPiernaDerecha()
self.lamerse()
}
}

Conceptos Básicos

9

Fundamentos de Programación Orientada Objetos

Características de POO

Los siguientes conceptos que vamos a ver, son características que tiene un buen diseño
orientado a objetos, si bien este paradigma no garantiza dichas características, hace mucho
más fácil poder lograrlas y en cierta manera nos obliga a usarlas.

Abstracción

La abstracción es la propiedad de los objetos que consiste en tener en cuenta sólo los
aspectos más importantes desde un punto de vista determinado y no tener en cuenta otros
aspectos. Durante el proceso de abstracción es cuando se decide qué características y
comportamientos debe tener el modelo para asi reducir su complejidad. De este modo, las
características complejas se hacen más manejables.

Ejemplo:

En POO, podemos considerar una Persona como un objeto que tiene propiedades (como
nombre, altura, peso, color de pelo, color de ojos, etcétera) y métodos (como hablar, mirar,
andar, correr, parar, etcétera). Gracias a la abstracción, otro objeto Tren puede manipular
objetos del tipo Persona sin tener en cuenta sus propiedades ni métodos ya que sólo le
interesa, por ejemplo, calcular la cantidad de personas que están viajando en él en ese
momento, sin tener en cuenta ninguna otra información relacionada con dichas personas,
tales como la altura, el nombre, el color de ojos, etcétera. Nuestro objeto Tren se
  • Links de descarga
http://lwp-l.com/pdf15135

Comentarios de: Fundamentos de Programación Orientada a Objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad