Lenguaje de Programacion 3 PDF
Lenguaje de Programacion 3 PDF
Programación Orientada a
Objetos
Profesora: Alumno:
ci:28264136
Características de la POO
Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las
características siguientes son las más importantes:
Abstracción
Denota las características esenciales de un objeto, donde se capturan sus
comportamientos.Cada objeto en el sistema sirve como modelo de un "agente" abstracto que
puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el
sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o
los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son
requeridas para ampliar una abstracción.
Encapsulamiento
Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma
entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los
componentes del sistema. Algunos autores confunden este concepto con el principio de
ocultación, principalmente porque se suelen emplear conjuntamente.
Principio de ocultación
Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una
interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase.
El aislamiento protege a las propiedades de un objeto contra su modificación por quien no
tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden
acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de
un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones
inesperadas.
Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo
nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto
que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos
pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una
referencia producirá el comportamiento correcto para el tipo real del objeto referenciado.
Herencia
Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de
clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a
las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento
permitiendo a los objetos ser definidos y creados como tipos especializados de objetos
preexistentes.
Recolección de basura
La recolección de basura o garbage collector es la técnica por la cual el entorno de objetos
se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los
objetos que hayan quedado sin ninguna referencia a ellos.
Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La
instalación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo,
nuestro teléfono celular es sólo uno de los miles que hay en el mundo. Si hablamos en
términos de la programación orientada a objetos, podemos decir que nuestro objeto celular
es una instancia de una clase conocida como "celular". Los celulares tienen características
(marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir
llamadas, enviar mensajes multimedia, transmisión de datos, etc.).
Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los celulares
comparten esas características comunes y construyen modelos o plantillas comunes, para
que a partir de esas se puedan crear muchos equipos celulares del mismo modelo. A ese
modelo o plantilla le llamamos CLASE, y a los equipos que sacamos a partir de ella la
llamamos OBJETOS.
Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del mismo
tipo y mismas características
Objeto
Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o
funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se
corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del
sistema (del programa). Es una instancia a una clase.
Por ejemplo, los automóviles tienen características (marca, modelo, color, velocidad máxima,
etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.).
Los Objetos de Software, al igual que los objetos del mundo real, también tienen
características y comportamientos. Un objeto de software mantiene sus características en
una o más "variables", e implementa su comportamiento con "métodos". Un método es una
función o subrutina asociada a un objeto.
Para redondear estas ideas, imaginemos que tenemos estacionado en nuestra cochera un
Ford Focus color azul que corre hasta 260 km/h. Si pasamos ese objeto del mundo real al
mundo del software, tendremos un objeto Automóvil con sus características predeterminadas:
Marca = Ford
Modelo = Focus
Color = Azul
Velocidad Máxima = 260 km/h
Cuando a las características del objeto le ponemos valores decimos que el objeto tiene
estados. Las variables almacenan los estados de un objeto en un determinado momento.
Atributo
Los atributos son las características individuales que diferencian un objeto de otro y
determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables
denominadas de instancia, y cada objeto particular puede tener valores distintos para estas
variables. Las variables de instancia también denominados miembros dato, son declaradas
en la clase pero sus valores son fijados y cambiados en el objeto. Además de las variables
de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias.
Los atributos constituyen un medio apropiado para asociar información declarativa con
código de C# (tipos, métodos, propiedades, etc.). Después de asociar un atributo a una
entidad del programa, éste se puede consultar en tiempo de ejecución mediante una técnica
denominada reflexión. Existen dos formas de atributos:
•Atributos que se definen en Common Language Runtime (CLR).
•Atributos personalizados que se pueden crear para agregar información adicional al código.
Esta información se puede recuperar después mediante programación.
Métodos
Los métodos describen el comportamiento de los objetos de una clase. Estos representan las
operaciones que se pueden realizar con los objetos de la clase,
La ejecución de un método puede conducir a cambiar el estado del objeto.
Se definen de la misma forma que las funciones normales pero deben declararse dentro de
la clase y su primer argumento siempre referencia a la instancia que la llama, de esta forma
se afirma que los métodos son funciones, adjuntadas a objectos.
Si el objeto es Persona, los métodos pueden ser: hablar, caminar, comer, dormir, etc.
class Persona:
cedula = "V-13458796"
nombre = "Leonardo"
apellido = "Caballero"
sexo = "M"
return mensaje
...
...
>>>
... macagua.__name__))
'Hola, soy la clase Persona.'
>>> type(Persona().hablar)
<type 'instancemethod'>
>>> Persona().hablar.__doc__
Si crea una instancia de objeto para la clase Persona e intenta llamar al método hablar() esto
lanzara una excepción TypeError, como sucede a continuación:
TypeError: unbound method hablar() must be called with Persona instance as first argument
(got str instance instead)
Por hacer
9.3.4.2.1. __str__()
El método __str__() es un método especial, el cual se ejecuta al momento en el cual un
objeto se manda a mostrar, es decir es una cadena representativa de la clase, la cual puede
incluir formatos personalizados de presentación del mismo.
def __str__(self):
self.apellido, self.getGenero(self.sexo))
9.3.4.2.2. __del__()
El método __del__() es un método especial, el cual se ejecuta al momento en el cual un
objeto es descartado por el intérprete. El comportamiento de __del__() es muy similar a los
“destructores” en otros lenguajes.
Métodos de clase
En ocasiones es necesario contar con métodos que interactúen con elementos de la clase de
la cual el objeto es instanciado. Python permite definir métodos de clase para esto.
Los métodos de clase son aquellos que están ligados directamente con los atributos
definidos en la clase que los contiene. Para definir un método de clase se utiliza el
decorador @classmethod y por convención se utiliza cls como argumento inicial en lugar
de self.
Del mismo modo, los métodos de clase utilizan el prefijo cls para referirse a los atributos de
la clase.
class <Clase>(object):
...
...
@classmethod
...
...
Métodos estáticos
Los métodos estáticos hacen referencia a las instancias y métodos de una clase. Para definir
un método estático se utiliza el decorador @staticmethod y no utiliza ningún argumento
inicial.
Al no utilizar self, los métodos estáticos no pueden interactuar con los atributos y métodos de
la instancia.
Para referirse a los elementos de la clase, se debe utilizar el nombre de la clase como prefijo.
class <Clase>(object):
...
...
@staticmethod
def <metodo>(<argumentos>):
...
...
Encapsulamiento:
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.
Conclusión
La programación orientada a objetos permite la optimización del código generado gracias a que
mediante técnicas de herencia, atributos estáticos entre otros permiten, que el código sea genérico de
manera que sea re utilizable. Mediante la técnica aprendida en el presente curso podemos establecer
una solución primitiva de un problema real, tan solo con relacionarlo con objetos lógicos que serán
usados para el desarrollo del software. Podemos dar a conocer de una forma sencilla los mecanismos
que se usan en este nivel de programación, a personas que deseen una explicación rápida y sencilla de
lo que es la programación orientada a objetos. Tenemos los conocimientos necesarios como para
enfrentar un problema real y desarrollo en otro lenguaje de programación, pues concebimos la idea de
que el lenguaje C es la base de la programación. Al trabajar con la programación orientada a objetos
sea esta desarrollada en otras plataformas de programación o en lenguaje C, sabemos las formas de
lograr un mejor rendimiento del equipo a controlar y aplicar soluciones sencillas, de manera que sea
fácilmente digeribles para el usuario y/o destinatario del trabajo final.