Sei sulla pagina 1di 12

¿QUE ES LA PROGRAMACIÓN ORIENTADA A

OBJETOS?
La programación Orientada a objetos (POO) es una forma especial de
programar, más cercana a como expresaríamos las cosas en la vida real que
otros tipos de programación.

Con la POO tenemos que aprender a pensar las cosas de una manera distinta,
para escribir nuestros programas en términos de objetos, propiedades,
métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar
una pequeña base que permita soltarnos un poco con este tipo de programación.

Durante años, los programadores se han dedicado a construir aplicaciones muy


parecidas que resolvían una y otra vez los mismos problemas. Para conseguir
que los esfuerzos de los programadores puedan ser utilizados por otras
personas se creó la POO. Que es una serie de normas de realizar las cosas de
manera que otras personas puedan utilizarlas y adelantar su trabajo, de
manera que consigamos que el código se pueda reutilizar.

La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva


de quien la programa, de manera que la forma de hacer las cosas puede ser
diferente según el programador. Aunque podamos hacer los programas de
formas distintas, no todas ellas son correctas, lo difícil no es programar
orientado a objetos sino programar bien. Programar bien es importante porque
así nos podemos aprovechar de todas las ventajas de la POO.

¿QUÉ ES EL ENCAPSULAMIENTO?
La encapsulación es un mecanismo que consiste en organizar datos y métodos
de una estructura, conciliando el modo en que el objeto se implementa, es
decir, evitando el acceso a datos por cualquier otro medio distinto a los
especificados. Por lo tanto, la encapsulación garantiza la integridad de los
datos que contiene un objeto.

La ocultación de datos

El usuario de una clase en particular no necesita saber cómo están


estructurados los datos dentro de ese objeto, es decir, un usuario no necesita
conocer la implementación Al evitar que el usuario modifique los atributos
directamente y forzándolo a utilizar funciones definidas para modificarlos
(llamadas interfaces), se garantiza la integridad de los datos (por ejemplo, uno
puede asegurarse de que el tipo de datos suministrados cumple con nuestras
expectativas, o icluso que los datos se encuentran dentro del intervalo
esperado).

La encapsulación define los niveles de acceso para elementos de esa clase.


Estos niveles de acceso definen los derechos de acceso para los datos,
permitiéndonos el acceso a datos a través de un método de esa clase en
particular, desde una clase heredada o incluso desde cualquier otra clase.
Existen tres niveles de acceso: público, las funciones de todas las clases
pueden acceder a los datos o métodos de una clase que se define con el nivel
de acceso público. Este es el nivel de protección de datos más bajo; protegido,
el acceso a los datos está restringido a las funciones de clases heredadas, es
decir, las funciones miembro de esa clase y todas las subclases; privado, el
acceso a los datos está restringido a los métodos de esa clase en particular.
Este es nivel más alto de protección de datos.

¿QUÉ ES EL POLIMORFISMO?
En programación orientada a objetos se denomina polimorfismo a la capacidad
que tienen los objetos de una clase de responder al mismo mensaje o evento en
función de los parámetros utilizados durante su invocación. Un objeto
polimórfico es una entidad que puede contener valores de diferentes tipos
durante la ejecución del programa.

En algunos lenguajes, el término polimorfismo es también conocido como


‘Sobrecarga de parámetros’ ya que las características de los objetos permiten
aceptar distintos parámetros para un mismo método (diferentes
implementaciones) generalmente con comportamientos distintos e
independientes para cada una de ellas.

Ejemplo:

Este método devuelve la suma de 2 parámetros:

-Function suma(int numero1,int numero2)


Este método devuelve la suma de los 3 parámetros:

-Function suma(int numero1,int numero2, int numero3)


Este método devuelve la concatenación de cadena1 y cadena2:

-Function suma(String cadena1, String cadena2)

¿QUÉ ES UNA CLASE?


Las clases son declaraciones de objetos, también se podrían definir como
abstracciones de objetos. Esto quiere decir que la definición de un objeto es la
clase. Cuando programamos un objeto y definimos sus características y
funcionalidades en realidad lo que estamos haciendo es programar una clase. En
los ejemplos anteriores en realidad hablábamos de las clases coche o fracción
porque sólo estuvimos definiendo, aunque por encima, sus formas.

Propiedades en clases

Las propiedades o atributos son las características de los objetos. Cuando


definimos una propiedad normalmente especificamos su nombre y su tipo. Nos
podemos hacer a la idea de que las propiedades son algo así como variables
donde almacenamos datos relacionados con los objetos.

Métodos en las clases

Son las funcionalidades asociadas a los objetos. Cuando estamos programando


las clases las llamamos métodos. Los métodos son como funciones que están
asociadas a un objeto.

¿QUE ES UN OBJETO?
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un
ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta
acción de crear un objeto a partir de una clase se llama instanciar (que viene
de una mala traducción de la palabra instace que en inglés significa ejemplar).
Por ejemplo, un objeto de la clase fracción es por ejemplo 3/5. El concepto o
definición de fracción sería la clase, pero cuando ya estamos hablando de una
fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto.
Para crear un objeto se tiene que escribir una instrucción especial que puede
ser distinta dependiendo el lenguaje de programación que se emplee, pero será
algo parecido a esto:

-miCoche = new Coche()


Con la palabra new especificamos que se tiene que crear una instancia de la
clase que sigue a continuación. Dentro de los paréntesis podríamos colocar
parámetros con los que inicializar el objeto de la clase coche.

Estados en objetos

Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando
tenemos un coche la propiedad color tomará un valor en concreto, como por
ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto
se llama estado.

Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza


el operador punto.

-miCoche.color = rojo
El objeto es miCoche, luego colocamos el operador punto y por último el nombre
es la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando
el valor del estado de la propiedad del objeto a rojo con una simple asignación.

Mensajes en objetos

Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por


ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos
pasándole el mensaje “ ponte en marcha” .

Para mandar mensajes a los objetos utilizamos el operador punto, seguido del
método que deseamos invocar.

-miCoche.ponerseEnMarcha()
En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar
paréntesis igual que cualquier llamada a una función, dentro irían los
parámetros.
¿QUÉ ES UN ATRIBUTO?
En la programación orientada a objetos, un atributo es una especificación que
define una propiedad de un objeto, elemento o archivo. También puede
referirse o establecer el valor específico para una instancia determinada de
los mismos.

Sin embargo, actualmente, el término atributo puede y con frecuencia se


considera como si fuera una propiedad dependiendo de la tecnología que se use.

Para mayor claridad, los atributos deben ser considerados más correctamente
como metadatos. Un atributo es con frecuencia y en general una característica
de una propiedad.

Un buen ejemplo es el proceso de asignación de valores XML a las propiedades


(elementos). Tenga en cuenta que el valor del elemento se encuentra antes de
la etiqueta de cierre (por separado), no en el propio elemento. El mismo
elemento puede tener una serie de atributos establecidos (Nombre =
"estoesunapropiedad").

Si el elemento en cuestión puede ser considerado una propiedad


(Nombre_Cliente) de otra entidad (digamos "cliente"), el elemento puede tener
cero o más atributos (propiedades) de su propio (Nombre_Cliente es de Tipo =
"tipotexto").

Un atributo de un objeto por lo general consiste de un nombre y un valor; de un


elemento, un tipo o nombre de clase; de un archivo, un nombre y extensión.

¿QUÉ ES UN MENSAJE?
El modelado de objetos no sólo tiene en consideración los objetos de un
sistema, sino también sus interrelaciones.

 Mensaje

Los objetos interactúan enviándose mensajes unos a otros. Tras la recepción


de un mensaje el objeto actuará. La acción puede ser el envío de otros
mensajes, el cambio de su estado, o la ejecución de cualquier otra tarea que se
requiera que haga el objeto.
 Método

Un método se implementa en una clase, y determina cómo tiene que actuar el


objeto cuando recibe un mensaje.

Cuando un objeto A necesita que el objeto B ejecute alguno de sus métodos, el


objeto A le manda un mensaje al objeto B.

Al recibir el mensaje del objeto A, el objeto B ejecutará el método adecuado


para el mensaje recibido.

EJEMPLO DE UNA CLASE CON LENGUAJE EN C

Una clase es una construcción que le permite crear sus propios tipos
personalizados agrupando las variables de otros tipos, métodos y eventos. Una
clase es como un plano. Define los datos y el comportamiento de un tipo. Si la
clase no se declara como estática, el código de cliente puede usarla mediante la
creación de objetos o instancias que se asignan a una variable. La variable
permanece en memoria hasta que todas las referencias a ella están fuera del
ámbito. En ese momento, CLR la marca como apta para la recolección de
elementos no utilizados. Si la clase se declara como estática, solo habrá una
copia en la memoria y el código de cliente solo podrá tener acceso a ella a
través de la propia clase, y no a través de una variable de instancia. Para
obtener más información, vea Clases estáticas y sus miembros.

A diferencia de los structs, las clases admiten la herencia, una característica


fundamental de la programación orientada a objetos. Para obtener más
información, vea Herencia.

Declarar clases
Las clases se declaran mediante la palabra clave class, como se muestra en el
siguiente ejemplo:
C#Copiar

public class Customer


{
//Fields, properties, methods and events go here...
}

La palabra clave class va precedida del nivel de acceso. Como en este caso se
usa public, cualquier usuario puede crear objetos de esta clase. El nombre de la
clase sigue a la palabra clave class . El resto de la definición es el cuerpo de la
clase, donde se definen los datos y el comportamiento. Los campos, las
propiedades, los métodos y los eventos de una clase se denominan de forma
colectiva miembros de clase.

Ejemplo:

public class Person


{
// Field
public string name;

// Constructor that takes no arguments.


public Person()
{
name = "unknown";
}

// Constructor that takes one argument.


public Person(string nm)
{
name = nm;
}

// Method
public void SetName(string newName)
{
name = newName;
}
}
class TestPerson
{
static void Main()
{
// Call the constructor that has no parameters.
Person person1 = new Person();
Console.WriteLine(person1.name);
person1.SetName("John Smith");
Console.WriteLine(person1.name);

// Call the constructor that has one parameter.


Person person2 = new Person("Sarah Jones");
Console.WriteLine(person2.name);

// Keep the console window open in debug mode.


Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
// Output:
// unknown
// John Smith

// Sarah Jones

EJEMPLO DE UN OBJETO CON LENGUAJE EN C

Puesto que las clases son tipos de referencia, una variable de un objeto de
clase contiene una referencia a la dirección del objeto del montón
administrado. Si se asigna un segundo objeto del mismo tipo al primer objeto,
ambas variables hacen referencia al objeto de esa dirección. Este punto se
analiza con más detalle más adelante en este tema.

Las instancias de clases se crean mediante el operador new. En el ejemplo


siguiente, Person es el tipo, y person1 y person 2 son instancias u objetos de
ese tipo.
C#Copiar

public class Person


{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
//Other properties, methods, events...
}

class Program
{
static void Main()
{
Person person1 = new Person("Leopold", 6);
Console.WriteLine("person1 Name = {0} Age = {1}", person1.Name,
person1.Age);

// Declare new person, assign person1 to it.


Person person2 = person1;

//Change the name of person2, and person1 also changes.


person2.Name = "Molly";
person2.Age = 16;

Console.WriteLine("person2 Name = {0} Age = {1}", person2.Name,


person2.Age);
Console.WriteLine("person1 Name = {0} Age = {1}", person1.Name,
person1.Age);

// Keep the console open in debug mode.


Console.WriteLine("Press any key to exit.");
Console.ReadKey();

}
}
/*
Output:
person1 Name = Leopold Age = 6
person2 Name = Molly Age = 16
person1 Name = Molly Age = 16
*/
Dado que las estructuras son tipos de valor, una variable de un objeto de
estructura contiene una copia de todo el objeto. También se pueden crear
instancias de estructuras usando el operador new , pero esto no resulta
necesario, como se muestra en el ejemplo siguiente:
C#Copiar

public struct Person


{
public string Name;
public int Age;
public Person(string name, int age)
{
Name = name;
Age = age;
}
}

public class Application


{
static void Main()
{
// Create struct instance and initialize by using "new".
// Memory is allocated on thread stack.
Person p1 = new Person("Alex", 9);
Console.WriteLine("p1 Name = {0} Age = {1}", p1.Name, p1.Age);

// Create new struct object. Note that struct can be initialized


// without using "new".
Person p2 = p1;

// Assign values to p2 members.


p2.Name = "Spencer";
p2.Age = 7;
Console.WriteLine("p2 Name = {0} Age = {1}", p2.Name, p2.Age);

// p1 values remain unchanged because p2 is copy.


Console.WriteLine("p1 Name = {0} Age = {1}", p1.Name, p1.Age);
// Keep the console open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
/*
Output:
p1 Name = Alex Age = 9
p2 Name = Spencer Age = 7
p1 Name = Alex Age = 9
*/
FUENTES:

https://www.desarrolloweb.com/articulos/499.php

https://styde.net/encapsulamiento-en-la-programacion-orientada-a-
objetos/

https://damian02.wordpress.com/polimorfismo-poo/

http://www.upv.es/amiga/43.htm

http://programacion.net/articulo/programacion_orientada_a_objetos_279

http://profesores.fi-b.unam.mx/carlos/java/java_basico3_2.html

Potrebbero piacerti anche