You are on page 1of 3

INTRODUCCIÓN A LOS OBJETOS

La programación orientada a objetos es una “filosofía”, un modelo de programación, con su teoría y su


metodología, que conviene conocer y estudiar, antes de nada. Un lenguaje orientado a objetos es un
lenguaje de programación que permite el diseño de aplicaciones orientadas a objetos.
Un objeto no es más que un conjunto de variables (o datos) y métodos (o funciones) relacionados entre
sí. Los objetos en programación se usan para modelar objetos o entidades del mundo real (el objeto
hijo, madre, o farmacéutica, por ejemplo). Un objeto es, por tanto, la representación en un programa de
un concepto, y contiene toda la información necesaria para abstraerlo: datos que describen sus atributos
y operaciones que pueden realizarse sobre los mismos.
Los atributos del objeto (estado) y lo que el objeto puede hacer (comportamiento) están expresados por
las variables y los métodos que componen el objeto respectivamente.
EL PROGRESO DE ABSTRACCIÓN
Abstracción: Es una descripción o especificación simplificada de un sistema, que enfatiza algunos de
los detalles de un sistema mientras suprime otros
Expresa las características esenciales de un objeto, las cuales distinguen al objeto de los demás.
 Concentrarse en lo esencial, ignorar lo irrelevante.
 Es una técnica para crear, comprender o manejar sistemas complejos.
El progreso de la abstracción

Mediante la Abstracción creamos MODELOS de la realidad. Se aplica a todos los ámbitos no solo a
las Ciencias de la Computación.
Cada objeto representa una abstracción
Una caja negra esconde detalles de los cuales no te tienes que preocupar.
Les permite como programadores controlar la complejidad de los programas solo pensando acerca de
características destacadas.
HERENCIAS: REUTILIZACIÓN DE INTERFACES
Herencia. Es una propiedad que permite que los objetos sean creados a partir de otros ya existentes,
obteniendo características (métodos y atributos) similares a los ya existentes.
La herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a
partir de una clase existente. La herencia (a la que habitualmente se denomina subclase) proviene del
hecho de que la subclase (la nueva clase creada) contiene las atributos y métodos de la clase primaria.
La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la
subclase, que luego se aplican a los atributos y métodos heredados.
Gracias a la herencia es posible especializar o extender la funcionalidad de una clase, derivando de ella
nuevas clases.
La herencia es siempre transitiva: una clase puede heredar características de superclases que se
encuentran muchos niveles más arriba en la jerarquía de herencia.
JERARQUÍA DE CLASE
La relación padre-hijo entre clases puede representarse desde un punto de vista jerárquico, denominado
vista de clases en árbol. La vista en árbol comienza con una clase general llamada superclase (a la que
algunas veces se hace referencia como clase primaria, clase padre, clase principal, o clase madre;
existen muchas metáforas genealógicas). Las clases derivadas (clase secundaria o subclase) se
vuelven cada vez más especializadas a medida que van descendiendo en el árbol.
TIPOS DE HERENCIA
Herencia Simple: Indica que se pueden definir nuevas clases solamente a partir de una clase inicial.
Herencia Multiple: Indica que se pueden definir nuevas clases a partir de dos o más clases iniciales.
Herencia de implementación: La implementación de los métodos es heredada. Puede sobreescribirse
en las clases derivadas.
Herencia de interfaz: Sólo se hereda la interfaz, no hay implementación a nivel de clase base (interfaces
en Java, clases abstractas en C++)
PRINCIPALES USOS
La herencia como reutilización de código: Una clase derivada puede heredar comportamiento de una
clase base, por tanto, el código no necesita volver a ser escrito para la derivada. Herencia de
implementación.
La herencia como reutilización de conceptos: Esto ocurre cuando una clase derivada sobrescribe el
comportamiento definido por la clase base. Aunque no se comparte ese código entre ambas clases,
ambas comparten el prototipo del método (comparten el concepto). Herencia de interfaz.
Herencia con interfaces

Las interfaces también pueden heredar de otras interfaces, consiguiendo así una nueva interfaz, se
emplea el extends habitual. Teniendo así que la clase que implementa a esa nueva interfaz recibirá los
métodos tanto de la interfaz base como la derivada.
CREACIÓN Y DESTRUCCIÓN DE OBJETOS
Los constructores son métodos especiales que se utilizan para inicializar objetos cuando se crean.
Aunque no se escriba ningún constructor, existe uno por defecto que se usa cuando se crea un objeto
a partir de un tipo referencia.
El proceso de creación de un objeto en C# se divide en dos pasos:
1. Usar la palabra reservada new para adquirir y asignar memoria para el objeto. 2.Escribir un constructor
para convertir la memoria adquirida por new en un objeto.
Aunque este proceso consta de dos pasos, ambos deben estar incluidos en una sola expresión.
Paso 1: Asignación de memoria

El primer paso en la creación de un objeto consiste en asignarle memoria. Todos los objetos, sin
excepción, se crean con el operador new, ya sea de forma explícita en el código o dejando que lo haga
el compilado.
Paso 2: Inicialización del objeto usando un constructor

El segundo paso en la creación de un objeto consiste en llamar a un constructor. Un constructor convierte


en un objeto la memoria asignada por new. Hay dos tipos de constructores: constructores de instancia,
que inicializan objetos, y constructores estáticos, que son los que inicializan clases.
Colaboración entre new y constructores de instancia

Es importante comprender el papel que juega en la creación de objetos la estrecha colaboración entre
new y los constructores de instancia. Lo único que new hace es adquirir memoria binaria sin inicializar,
mientras que el solo propósito de un constructor de instancia es inicializar la memoria y convertirla en
un objeto que se pueda utilizar.
En particular, new no participa de ninguna manera en la inicialización y los constructores de instancia
no realizan ninguna función en la adquisición de memoria.
DESTRUIR OBJETO
Es necesario saber qué ocurre en una aplicación cuando un objeto, y no un valor, está fuera de ámbito
o se destruye. Al final de esta lección, usted será capaz de: •Identificar el papel jugado por la recolección
de basura cuando un objeto está fuera de ámbito o se destruye.
Tiempo de vida de un objeto
La destrucción de un objeto en C# es un proceso en dos pasos que corresponden, invirtiéndolos, a los
dos pasos del proceso de creación del objeto.
Como vimos que el proceso de creación de un objeto en C# para un tipo referencia consta de los dos
pasos siguientes:
1.Uso de la palabra reservada new para adquirir y asignar memoria.
2.Llamada a un constructor para convertir la memoria binaria adquirida por new en un objeto.
La destrucción de un objeto en C# también es un proceso en dos pasos:
1.Se anula la inicialización del objeto. El objeto es convertido de nuevo en memoria binaria. Este paso,
que en C# se realiza con el destructor, es el inverso de la inicialización efectuada por el constructor.
2.Se libera la memoria binaria; es decir, se devuelve la memoria al montón. Este paso es el inverso de
la asignación realizada por new y no se puede controlar de ninguna manera.
El tiempo de vida de un objeto no está vinculado al ámbito en el que se crea. Los objetos se inicializan
en memoria del montón asignada mediante el operador new.
De aquí se deducen las siguientes características generales de los objetos:
Destrucción no determinista Un objeto aparece cuando se crea, pero, a diferencia de un valor, no se
destruye al final del ámbito en el que se crea. La creación de un objeto es determinista, pero no así su
destrucción. No es posible controlar exactamente cuándo se destruye un objeto.
Tiempos de vida más largos: Puesto que el tiempo de vida de un objeto no está vinculado al método
que lo crea, un objeto puede existir mucho más allá de una llamada al método
En C# no es posible destruir un objeto de forma explícita mediante código. En lugar de ello, C# tiene
recolección de basura(Garbage Collection), que destruye objetos automáticamente. Esto garantiza que:
Los objetos se destruyen.
Sin embargo, la recolección de basura no indica cuándo exactamente se destruirá un objeto.
Los objetos se destruyen sólo una vez.
Esto significa que nunca se dará el comportamiento impredecible causado por una doble eliminación,
como puede ocurrir en C++.
Sólo se destruyen los objetos inalcanzables.
La recolección de basura garantiza que un objeto nunca será destruido si todavía hay algún otro objeto
que apunte hacia él. Sólo se destruyen los objetos que ya no son utilizados por ninguna otra parte del
programa. La capacidad de un objeto de acceder a otro a través de una variable referenciase llama
alcance (reachability).

You might also like