SlideShare una empresa de Scribd logo
1 de 35
Investigación operadores poo
Dávalos Rocha Rosaura Jaqueline
4102
Programación orientado a objetos
• Las sobrecargas de operadores permiten combinar y comparar los tipos
utilizando operadores como "+", "-", "=" y "!=". Agregando sobrecargas de
operadores a un tipo, se permite a los desarrolladores utilizar el tipo como
si fuera un tipo primitivo integrado. La sobrecarga de operadores sólo
debería realizarse cuando el significado de la operación es intuitivo para el
tipo (por ejemplo, para admitir que se agreguen dos instancias de un tipo
que representa un valor numérico). La sobrecarga de operadores no se
debería utilizar para proporcionar un acceso directo sintáctico para las
operaciones no intuitivas.
• El ejemplo siguiente muestra la firma para la operación de suma de la
clase DateTime
•
• [Visual Basic]
• Public Shared Function op_Addition(ByVal d As DateTime, _
• ByVal t As TimeSpan _
• ) As DateTime
Sobrecargas de operador
Operador lógico unario
• El Not (Operador, Visual Basic) realiza
la negación lógica en una expresión Boolean. Produce
el contrario lógico de su operando. Si la expresión se
evalúa como True, Not devuelve False; si la expresión
se evalúa comoFalse, Not devuelve True. Debido a que
Object es la clase base de todos los tipos de referencia
en .NET Framework, este comportamiento es heredado
por los tipos de referencia que no reemplazan el
métodoToString.
• VB
• Dim x, y As Booleanx = Not 23 > 14y = Not 23 > 67' The
preceding statements set x to False and y to True.
Operadores lógicos binarios
• El And (Operador, Visual Basic) realiza la conjunción lógica de dos expresiones Boolean. Si ambas
expresiones se evalúan como True, And devuelve True. Si al menos una de las expresiones se
evalúa como False, Anddevuelve False.
• El Or (Operador, Visual Basic) realiza la disyunción o inclusión lógicas de dos expresiones Boolean. Si
una de las expresiones o ambas se evalúan como True, Or devuelve True. Si ninguna de las
expresiones se evalúa como True, Or devuelve False.
• Xor (Operador, Visual Basic) realiza la exclusión lógica de dos expresiones Boolean. Si exactamente
una expresión, pero no ambas, se evalúa como True, Xor devuelve True. Si ambas expresiones se
evalúan como Trueo como False, Xor devuelve False.
• En el siguiente ejemplo se muestra cómo utilizar los operadores And, Or y Xor.
•
•
• VB
• Dim a, b, c, d, e, f, g As Boolean a = 23 > 14 And 11 > 8b = 14 > 23 And 11 > 8' The preceding
statements set a to True and b to False. c = 23 > 14 Or 8 > 11d = 23 > 67 Or 8 > 11' The preceding
statements set c to True and d to False. e = 23 > 67 Xor 11 > 8f = 23 > 14 Xor 11 > 8g = 14 > 23 Xor 8
> 11' The preceding statements set e to True, f to False, and g to False.
Polimorfismo y Funciones Virtuales
• El polimorfismo es la funcionalidad que permite a código
antiguo invocar código nuevo, también permite extender el
sistema sin modificar el código existente, esto se logra
sobreescribiendo o redefiniendo el código, para lo cual se
utilizan funciones virtuales y la palabra clave override.
• Las funciones abstractas son automaticamente funciones
virtuales, las cuales permiten al programador usar
polimorfismo para hacer su código simple.
• Virtual significa que cuando una invocación a funciones
miembro, el compilador debería buscar por el tipo real del
objeto y no por el tipo de la referencia, e invocar en base al
tipo la función apropiada.
• using System; public class Persona{ //Propiedades
public string sNombre; public int iEdad;
//Constructor public Persona(string sNombre, int iEdad){
this.sNombre = sNombre;
this.iEdad = iEdad; } //Métodos
virtual public string Tipo(){ return "Persona";
} } //Herencia Simple public class
Empleado : Persona{ public Empleado(string sNombre, int
iEdad):base(sNombre, iEdad){} override public string Tipo(){
return "Empleado"; } } class
App{ //Aplicación public static void Main(){
Persona Mexicano = new Persona("Gerado Ángeles Nava", 33);
Console.WriteLine("Mexicano.sNombre : " + Mexicano.sNombre);
Console.WriteLine("Mexicano.iEdad : " + Mexicano.iEdad);
Console.WriteLine("Mexicano.Tipo : " + Mexicano.Tipo());
Console.WriteLine("--- Arreglo de Objetos ---");
Empleado[] aProgramadores = new Empleado[2];
aProgramadores[0] = new Empleado("Bill Gates", 50);
aProgramadores[1] = new Empleado("Eric S. Raymond", 60);
for(int i = 0; i < aProgramadores.Length; i++){
Console.WriteLine("aProgramadores["+i+"].sNombre : " +
aProgramadores[i].sNombre);
Console.WriteLine("aProgramadores[" + i + "].iEdad : " + aProgramadores[i].iEdad);
Console.WriteLine("aProgramadores[" + i + "].Tipo : " +
aProgramadores[i].Tipo()); } } }
• Cuando una función es declarada con la palabra
reservada override significa que es la misma función que
fue declarada en laclase base, si la palabra
reservada override se omite el compilador podría asumir
que la función no está relacionada a la función de la clase
base y no despacha la función virtual (el compilador podría
sugerir omitir override o agregar new) .
• Cuando existe una función virtual el programador puede
pasar una referencia a la clase abstracta aunque la clase
derivada y el compilador podrían escribir código para
invocar la versión apropiada de la función en tiempo de
ejecución.
• Por ejemplo, el objeto base object tiene una función virtual
llamada ToString() que convierte un objeto a string. Si se
invoca la función ToString() en un objeto que que no la
tiene como versión propia, la versión de la función que es
parte de la clase object podría ser invocada.
•
IDENTIFICACION DE PATRONES DE DISEÑO
PARA LA AUTENTIFICACION EN APLICACIONES
• En algunas aplicaciones, hay clases que deben
ser instanciadas una sola vez.
Por ejemplo, un sistema operativo debe tener
solo un sistema de reloj y una compañía debe
tener solo un sistema contable llamada
singular o singleton.
El patrón de diseño Singular (Singleton)
asegura que se cree sólo una instancia de la
clase y provee un método para acceder esa
única instancia.
• Todos los objetos que utilizan una instancia de una
clase Singular utilizan la misma instancia
Estructura Observa que los miembros estáticos de la
clase están subrayados .
En este patrón de diseño
El atributo estático instance contiene la única instancia
de la clase.
El constructor es definido como private de modo que
las otras clases no puedan crear instancias.
El método estático getSingletonInstance regresa la
única instancia de la clase.
La primera vez que este método es llamado, crea la
única instancia
En la línea 10, la variable estática y privada
singletonInstance es inicializada con una instancia de la
claseICarnegieInfo —singletonInstance será la única
instancia de la clase ICarnegieInfo en una aplicación.
• En la línea 22, el constructor es definido como privado, de modo
que otras clases no puedan crear instancias deICarnegieInfo .
En la línea 36, la clase define un método estático llamado
getSingletonInstance que regresa una referencia a la única instancia
de ICarnegieInfo .
a primera llamada al método getSingletonInstance crea la única
instancia.
• Consecuencias
El patrón de diseño Singular tiene los siguientes beneficios:
Una clase Singular puede controlar cómo y cuando el código cliente
puede acceder a la única instancia.
El código cliente no tiene la libertad de utilizar el operador new
para crear una instancia de la clase Singular.
En vez de eso, debe llamar a un método estático que regresa una
referencia a la instancia única.
Una clase Singular puede ser modificada fácilmente si los
requerimientos cambian y la aplicación necesita limitar el número
de instancias a un número diferente de uno.
FABRICAS ABSTRACTAS
• Contexto y problema
Contexto: Debemos crear diferentes objetos, todos pertenecientes
a la misma familia. Por ejemplo: las librerías para crear interfaces
gráficas suelen utilizar este patrón y cada familia sería un sistema
operativo distinto. Así pues, el usuario declara un Botón, pero de
forma más interna lo que está creando es un BotónWindows o un
BotónLinux, por ejemplo.
El problema que intenta solucionar este patrón es el de crear
diferentes familias de objetos.
El patrón Abstract Factory está aconsejado cuando se prevé la
inclusión de nuevas familias de productos, pero puede resultar
contraproducente cuando se añaden nuevos productos o cambian
los existentes, puesto que afectaría a todas las familias creadas.
Estático
• La estructura típica del patrón Abstract Factory es la siguiente:
• Cliente: La clase que llamará a la factoría adecuada ya que necesita crear uno de
los objetos que provee la factoría, es decir, Cliente lo que quiere es obtener una
instancia de alguno de los productos (ProductoA, ProductoB).
• AbstractFactory: Es de definición de la interfaces de las factorías. Debe de
proveer un método para la obtención de cada objeto que pueda crear.
("crearProductoA()" y "crearProductoB()")
• Factorías Concretas: Estas son las diferentes familias de productos. Provee de la
instancia concreta de la que se encarga de crear. De esta forma podemos tener
una factoría que cree los elementos gráficos para Windows y otra que los cree
para Linux, pudiendo poner fácilmente (creando una nueva) otra que los cree para
MacOS, por ejemplo.
• Producto abstracto: Definición de las interfaces para la familia de productos
genéricos. En el diagrama son "ProductoA" y "ProductoB". En un ejemplo de
interfaces gráficas podrían ser todos los elementos: Botón, Ventana, Cuadro de
Texto, Combo... El cliente trabajará directamente sobre esta interfaz, que será
implementada por los diferentes productos concretos.
• • Producto concreto: Implementación de los diferentes productos. Podría
ser por ejemplo "BotónWindows" y "BotónLinux". Como ambos
implementan "Botón" el cliente no sabrá si está en Windows o Linux,
puesto que trabajará directamente sobre la superclase o interfaz.
•
Un ejemplo:
Veremos un ejemplo didáctico y basado en el libro Head First Design
Patterns, de O'Reilly.
Supongamos que disponemos de una cadena de pizzerías. Para crear
pizzas disponemos de un método abstracto en la clase Pizzería que será
implementada por cada subclase de Pizzería.
abstract Pizza crearPizza()
Concretamente se creará una clase PizzeríaZona por cada zona, por
ejemplo la Pizzería de New York sería PizzeriaNewYork y la de Californía
PizzeríaCalifornia que implementarán el método con los ingredientes de
sus zonas.
Las pizzas son diferentes según las zonas. No es igual la pizza de New York
que la pizza de California. Igualmente, aunque usarán los mismos
ingredientes (tomate, mozzarella...) no los obtendrán del mismo lugar,
cada zona los comprará donde lo tenga más cerca. Así pues podemos crear
un método creador de Pizza que sea
Pizza(FactoriaIngredientes fi);
• Como vemos utilizamos la factoría abstracta (no las
concretas de cada zona, como podría ser
IngredientesNewYork o IngredientesCalifornia). Pizza podrá
obtener los ingredientes de la factoría independientemente
de donde sea. Sería fácil crear nuevas factorías y añadirlas
al sistema para crear pizzas con estos nuevos ingredientes.
Efectivamente, en este ejemplo cliente es Pizza y es
independiente de la Factoría usada.
El creador de la Pizza será el encargado de instanciar la
factoría concreta, así pues los encargados de instanciar las
factorías concretas serán las pizzerías locales. En
PizzeríaNewYork podemos tener el método crearPizza() que
realice el siguiente trabajo:
Pizza crearPizza() {
FactoríaIngredientes fi = new IngredientesNewYork();
Pizza pizza = new Pizza(fi); // Uso de la factoría
pizza.cortar();
pizza.empaquetar();
return pizza;
}
SINGLENTOS O SINGULAR:
• En algunas aplicaciones, hay clases que deben ser instanciadas una sola
vez.
Por ejemplo, un sistema operativo debe tener solo un sistema de reloj y
una compañía debe tener solo un sistema contable llamada singular o
singleton.
El patrón de diseño Singular (Singleton) asegura que se cree sólo una
instancia de la clase y provee un método para acceder esa única instancia.
•
Todos los objetos que utilizan una instancia de una clase Singular utilizan
la misma instancia
Estructura Observa que los miembros estáticos de la clase están
subrayados .
En este patrón de diseño
El atributo estático instance contiene la única instancia de la clase.
El constructor es definido como private de modo que las otras clases no
puedan crear instancias.
El método estático getSingletonInstance regresa la única instancia de la
clase.
La primera vez que este método es llamado, crea la única instancia
En la línea 10, la variable estática y privada singletonInstance es
inicializada con una instancia de la claseICarnegieInfo —singletonInstance
será la única instancia de la clase ICarnegieInfo en una aplicación.
• En la línea 22, el constructor es definido como privado, de
modo que otras clases no puedan crear instancias
deICarnegieInfo .
En la línea 36, la clase define un método estático llamado
getSingletonInstance que regresa una referencia a la única
instancia de ICarnegieInfo .
a primera llamada al método getSingletonInstance crea la única
instancia.
• Consecuencias
El patrón de diseño Singular tiene los siguientes beneficios:
Una clase Singular puede controlar cómo y cuando el código
cliente puede acceder a la única instancia.
El código cliente no tiene la libertad de utilizar el operador new
para crear una instancia de la clase Singular.
En vez de eso, debe llamar a un método estático que regresa
una referencia a la instancia única.
Una clase Singular puede ser modificada fácilmente si los
requerimientos cambian y la aplicación necesita limitar el
número de instancias a un número diferente de uno.
•
FACTORY METHOD O METODO DE
FÁBRICA:
• En diseño de software, el patrón de diseño
Factory Method consiste en utilizar una clase
constructora (al estilo del Abstract Factory)
abstracta con unos cuantos métodos definidos y
otro(s) abstracto(s): el dedicado a la construcción
de objetos de un subtipo de un tipo determinado.
Es una simplificación del Abstract Factory, en la
que la clase abstracta tiene métodos concretos
que usan algunos de los abstractos; según
usemos una u otra hija de esta clase abstracta,
tendremos uno u otro comportamiento.
Estructura
• Las clases principales en este patrón son el creador y el
producto. El creador necesita crear instancias de productos,
pero el tipo concreto de producto no debe ser forzado en
las subclases del creador, porque entonces las posibles
subclases del creador deben poder especificar subclases
del producto para utilizar.
La solución para esto es hacer un método abstracto (el
método de la fábrica) que se define en el creador. Este
método abstracto se define para que devuelva un
producto. Las subclases del creador pueden sobrescribir
este método para devolver subclases apropiadas del
producto.
Ejemplo de código (en Java)
• // Definimos la clase abstracta constructora
public abstract class Creator{
// Operación que realiza
public Product anOperation() {
return factoryMethod();
}
// Definimos método abstracto
protected abstract Product factoryMethod();
}
Ahora definimos el creador concreto.
public class ConcreteCreator extends Creator{
protected Product factoryMethod() {
return new ConcreteProduct();
}
}
Y definimos el producto y su implementación concreta.
public interface Product{
public void operacion();
}
public class ConcreteProduct implements Product{
public void operacion(){
System.out.println("Una operación de este producto");
}
}
Y un ejemplo de uso :
public static void main(String args[]){
Creator aCreator;
aCreator = new ConcreteCreator();
Product producto = aCreator.anOperation();
producto.operacion();
PROTOTIPO:
• Programación basada en prototipos es un estilo de programación
orientada a objetos en el cual, las "clases" no están presentes, y la
re-utilización de procesos (conocida como herencia en lenguajes
basados en clases) se obtiene a través de la clonación de objetos ya
existentes, que sirven de prototipos, extendiendo sus
funcionalidades. Este modelo es conocido como orientado a
prototipos, o programación basada en instancias.
El original (y el más canónico) ejemplo de lenguaje prototipado es
el lenguaje Self, desarrollado por David Ungar y Randall Smith. Sin
embargo el paradigma sin clases está comenzando a popularizarse y
ya ha sido implementado en lenguajes de programación como
JavaScript, Cecil, NewtonScript, Ío, MOO, REBOL y varios otros.
Analógicamente
• Un ejemplo de instancia en un lenguaje de programación visual,
sería tomar o arrastrar un objeto de la barra de herramientas o de
la lista de librerías y colocarlo en el escritorio o escenario de trabajo
(estamos creando una instancia de ese objeto, una copia). Si
arrastramos 10 botones al entorno visual de trabajo, estamos
creando una instancia del botón original, si a cada botón le
cambiamos el nombre, tendremos 10 botones que heredan las
mismas propiedades y métodos del objeto original. Tenemos como
resultado que con un solo botón hicimos 10 y nuestro archivo
pesara como si tuviese uno solo.
De esta forma, partiendo de lo que conforma a un objeto original
(propiedades y métodos) se reutilizan sus funciones creando una
instancia del mismo en distintas partes del programa donde se
necesite. Si el objeto original cambia o le es agregado algún nuevo
atributo, las instancias lo heredaran puesto que son una copia del
objeto original.
Comparación con el modelo basado en
clases
• En lenguajes basados en clases los objetos pueden ser
de dos tipos generales, las clases y las instancias. Las
clases definen la disposición y la funcionalidad básicas
de los objetos, y las instancias son objetos "utilizables"
basados en los patrones de una clase particular. En este
modelo, las clases actúan como colecciones de
comportamiento (métodos) y estructuras que son
iguales para todas las instancias, mientras que las
instancias llevan los datos de los objetos. La distinción
del papel se basa así sobre todo en una distinción entre
la estructura y el comportamiento en un lado, y el
estado en el otro.
• Los entusiastas de la programación basada en prototipos a
menudo argumentan que los lenguajes basados en clases animan
un modelo del desarrollo que se centra primero en la taxonomía y
las relaciones entre las clases. En cambio, la programación basada
en prototipos intenta animar al programador que se centre en el
comportamiento de un cierto sistema de ejemplos y después de
clasificar estos objetos en objetos arquetipos que se utilizan más
adelante en una manera similar a las clases. Como tal, muchos
sistemas basados en prototipos animan la alteración de prototipos
durante tiempo de ejecución, mientras que solamente muy pocos
sistemas orientados a objeto, basados en clase (como el primer
sistema orientados al objetos dinámicos, Smalltalk) permiten que
las clases sean alteradas durante la ejecución de un programa.
Mientras que basan la amplia mayoría de sistemas basados en
prototipos se hacen con lenguajes de programación interpretados
y de tipos de datos dinámicos, es importante precisar que los
sistemas de tipos de datos estáticos son técnicamente factibles. El
lenguaje de programación de Omega que es basado en prototipos
es un ejemplo de tal sistema, aunque según el Web site de Omega,
Omega no es exclusivamente de tipos de datos estáticos, pero su
"compilador puede elegir utilizar el tipo de dato estático donde es
posible esto y puede mejorar la eficacia del programa.”
APLICACIÓN DE METODOS PARA LA
OPERACIÓN CONTINUA DEL SISTEMA
• CIFRADO DE DATOS:
• El cifrado de datos se puede entender como el hecho de guardar
algo valioso dentro de una caja fuerte cerrada con llave. Los datos
confidenciales se cifran con un algoritmo de cifrado y una clave que
los hace ilegibles si no se conoce dicha clave.
• Las claves de cifrado de datos se determinan en el momento de
realizar la conexión entre los equipos. El uso del cifrado de datos
puede iniciarse en su equipo o en el servidor al que se conecta.
Conexiones de red admite dos tipos de cifrado:
• Microsoft MPPE, que utiliza cifrado RSA RC4.
• Una implementación de Seguridad de Protocolo Internet (IPSec)
que utiliza cifrado de Estándar de cifrado de datos (DES).
INICIALIZACION DE OBJETOS:
• Para declarar o inicializar variables o ya sean objetos de
referencia, el proceso es muy parecido al de crear las
variables de tipo primitivo. La única diferencia es que se
debe crear un objeto de la clase que apunta a la variable de
referencia ante de que podamos inicializar dicho objeto.
Para poder obtener este proceso debemos seguir los
siguientes pasos:
<!--[if !supportLists]-->- <!--[endif]-->Declara una referencia
a un objeto, esto se hace mediante la especificación de un
identificador y del tipo de objeto al que se quiere hacer
referencia, que es la clase del objeto.
• <!--[if !supportLists]-->- <!--[endif]-->Crear nuestro nuevo objeto
mediante la palabra reservada “new”.
<!--[if !supportLists]-->- <!--[endif]-->Inicializar la variable que
referencia al objeto asignándole el objeto.
Veamos un ejemplo donde declaramos nuestra variable que
referencia a un objeto e instanciamos nuestro objeto.
public class Fabrica
{
public static void main(String agrs[])
{
Auto miAuto;
miAuto = new Auto();
miAuto.mostrarInformacionAuto();
}
}
Bien, tenemos la clase Fabrica la cual contiene el método estático
main, en donde nosotros instanciamos un objeto de tipo auto, el
cual se llama miAuto y con el podemos invocar un método de la
clase Auto que en este caso fue el método
mostrarInformacionAuto().
DESTRUCCION DE OBJETOS:
• La destrucción de objetos es una función virtual
que necesita ser implementada por una clase
derivada que no sea abstracta. Las clases que
contienen métodos virtuales puros son
denominadas "abstractas". Éstas no pueden ser
instanciadas directamente, y una subclase de una
clase abstracta sólo puede ser instanciada
directamente si todos los métodos virtuales
puros han sido implementados por esa clase o
una clase padre.
• Las destrucciones de objetos normalmente tienen una
declaración (cabecera) pero no tienen definición
(implementación). Como ejemplo, una clase base abstracta
como "SimboloMatematico" puede ofrecer una función
virtual pura como hazOperacion, y las clases derivadas
"Suma" y "Resta" pueden implementar hazOperacion para
ofercer implementaciones concretas. La implementación de
hazOperacion no tendría sentido en la clase
"SimboloMatematico" porque "SimboloMatematico" es un
concepto abstracto cuyo comportamiento es definido
solamente por cada tipo (subclase) de "SimboloMatematico"
dado.
De forma similar, una subclase dada de "SimboloMatematico"
no sería completa sin una implementación de hazOperacion.
Aunque los métodos virtuales puros normalmente no tienen
implementación en la clase que los declara, en C++ permite
hacer esto, ofreciendo un comportamiento por omisión en el
que la clase derivada puede delegar si es apropiado.
• Las destrucciones de objetos también son utilizadas
donde las declaraciones de métodos se utilizan para
definir una interfaz para la que las clases derivadas
proveerán todas las implementaciones. Una clase
abstracta sirviendo como interfaz contiene sólo una
destrucción de objetos, y ningún miembro de datos
(variables, constantes, etc.) ni métodos ordinarios. El
uso de clases puramente abstractas como interfaces
funciona en C++ ya que éste soporta herencia múltiple.
Debido a que muchos lenguajes orientados a objetos
no soportan herencia múltiple, normalmente ofrecen
un mecanismo por separado para hacer interfaces. Esto
es así por ejemplo en Java.
MANEJO DE EXPRESIONES:
• Una excepción en términos de lenguaje de programación es la indicación
de un problema que ocurre durante la ejecución de un programa. Sin
embargo la palabra excepción se refiere que este problema ocurre con
poca frecuencia generalmente cuando existe algún dato o instrucción que
no se apega al funcionamiento del programa por lo que se produce un
error. El manejo de excepciones permite al usuario crear aplicaciones
tolerantes a fallas y robustos (resistentes a errores) para controlar estas
excepciones y que pueda seguir ejecutando el programa sin verse afectado
por el problema. En lenguaje java estas excepciones pueden manejarse
con las clases que extienden el paquete Throwable de manera directa o
indirecta, pero existen diversos tipos de excepciones y formas para
manejarlas. Uso del manejo de excepciones El manejo de excepciones
ayuda al programador a remover el código para manejo de errores de la
línea principal de ejecución, además se pude elegir entre manejar todas
las excepciones, las de cierto tipo o de las de grupos relacionados, esto
hace que la probabilidad de pasar por alto los errores se reduzca y a la vez
hace los programas más robustos.
Limpieza de pila
• En ocasiones cuando se hace lanza una excepción, pero
no se atrapa en un enlace específico, la pila de
llamadas se limpia y el programa intenta volverlo a
atrapar en el siguiente bloque, esto se conoce como
limpia de pila. Este proceso hace que el método en el
que no se atrapó la excepción termina, todas sus
variables quedan fuera del enlace y el control regresa a
la instrucción que originalmente la invocó. La limpieza
de pila de repetirá hasta que la excepción pueda ser
atrapada porque de lo contrario se producirá un error a
la hora de compilar.
Aserciones
• Las aserciones ayudan a asegurar la validez del programa al atrapar los errores potenciales e
identificar los posibles errores lógicos del desarrollo. Estas pueden escribirse como comentarios
para apoyar a la persona que desarrolla el programa. Algunos ejemplos son: Precondiciones y pos
condiciones Estas características son utilizadas por los programadores para hacer un análisis de lo
esperado del programa antes y después de su ejecución. Son importantes porque gracias a ellas se
pueden detectar posibles fallas en el programa y corregirlas. Las precondiciones son verdaderas
cuando se invoca a un método, estas describen las características del método y las expectativas que
se tienen en el estado actual del programa. Si no se cumplen las precondiciones el comportamiento
del método es indefinido por lo que se lanza una excepción que esté preparada o continuar con el
programa esperando el error. Las pos condiciones describen las restricciones en el entorno y
cualquier efecto secundario del método. Es recomendable escribirlas para saber que esperar en un
futuro si es que se hacen modificaciones.
Las aserciones ayudan a asegurar la validez del programa al atrapar los errores potenciales e
identificar los posibles errores lógicos del desarrollo. Estas pueden escribirse como comentarios
para apoyar a la persona que desarrolla el programa. Algunos ejemplos son: Precondiciones y pos
condiciones Estas características son utilizadas por los programadores para hacer un análisis de lo
esperado del programa antes y después de su ejecución. Son importantes porque gracias a ellas se
pueden detectar posibles fallas en el programa y corregirlas. Las precondiciones son verdaderas
cuando se invoca a un método, estas describen las características del método y las expectativas que
se tienen en el estado actual del programa. Si no se cumplen las precondiciones el comportamiento
del método es indefinido por lo que se lanza una excepción que esté preparada o continuar con el
programa esperando el error. Las pos condiciones describen las restricciones en el entorno y
cualquier efecto secundario del método. Es recomendable escribirlas para saber que esperar en un
futuro si es que se hacen modificaciones.
• El manejo de excepciones ayuda a lidiar con los
errores de una aplicación por medio de la
manipulación del código para hacer programas más
robustos. Además existen herramientas que ayudan
a manejarlas tal es el caso de los bloques tratar que
encierran el código que puede lanzar una excepción
y los bloques atrapar que lidian con las excepciones
que surjan. También existen técnicas que el
programador utiliza para conocer el posible
funcionamiento del programa y detectar los errores
que pueda contener.
Ejemplo de manejo de excepción en Java:
import java.io.IOException;
• // ...
public static void main(String[] args) {
try {
// Se ejecuta algo que puede producir una excepción
} catch (IOException e) {
// manejo de una excepción de entrada/salida
} catch (Exception e) {
// manejo de una excepción cualquiera
} finally {
// código a ejecutar haya o no excepción
}
}
Ejemplo de manejo de excepción en Delphi:
procedure TForm1.Button1Click(Sender : TObject);
begin
try
try
a := b / c;
finally
// Este código siempre se ejecuta, independientemente de si ocurre o no una excepción.
end;
except
on e:EZeroDivide do
// Manejo de la excepción División por cero.
on e:Exception do
// Manejo de una excepción "genérica".
end;
end;
• Ejemplo de manejo de excepción en Python:
try:
result = x / y
except ZeroDivisionError:
print "division by zero!"
else:
print "result is", result
finally:
print "executing finally clause"
Ejemplo de manejo de excepcion en Ada
type T_Matriz is array (Positive range <>,
Positive range <>) of Integer;
procedure Rellenar_Matriz
(Matriz : in T_Matriz;
K : in Integer;
Q : in Integer);
is
begin
begin
Matriz (K,Q) := 3;
exception
when Constraint_Error =>
Put_Line ("Las posiciones se salen del rango de la matriz");
end;
end Rellenar_Matriz;

Más contenido relacionado

La actualidad más candente

Programación Orientada a Objetos - Unidad 5 Excepciones
Programación Orientada a Objetos - Unidad 5 ExcepcionesProgramación Orientada a Objetos - Unidad 5 Excepciones
Programación Orientada a Objetos - Unidad 5 ExcepcionesJosé Antonio Sandoval Acosta
 
BLS Based Discreet Log Contracts
BLS Based Discreet Log ContractsBLS Based Discreet Log Contracts
BLS Based Discreet Log ContractsIchiro Kuwahara
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo pptivanvillar7
 
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓNINTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓNmellcv
 
Tipos de consultas sql
Tipos de consultas sqlTipos de consultas sql
Tipos de consultas sqlFausto Torres
 
16 17 tecnologias python oop
16 17 tecnologias python oop16 17 tecnologias python oop
16 17 tecnologias python oopSoftware Guru
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
Programacion estructura de arboles en c
Programacion estructura de arboles en cProgramacion estructura de arboles en c
Programacion estructura de arboles en cJessica Suarez
 

La actualidad más candente (20)

Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Programación Orientada a Objetos - Unidad 5 Excepciones
Programación Orientada a Objetos - Unidad 5 ExcepcionesProgramación Orientada a Objetos - Unidad 5 Excepciones
Programación Orientada a Objetos - Unidad 5 Excepciones
 
Calculadora con operaciones básicas en java
Calculadora con operaciones básicas en javaCalculadora con operaciones básicas en java
Calculadora con operaciones básicas en java
 
BLS Based Discreet Log Contracts
BLS Based Discreet Log ContractsBLS Based Discreet Log Contracts
BLS Based Discreet Log Contracts
 
SQL Differences SQL Interview Questions
SQL Differences  SQL Interview QuestionsSQL Differences  SQL Interview Questions
SQL Differences SQL Interview Questions
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓNINTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
 
Tipos de consultas sql
Tipos de consultas sqlTipos de consultas sql
Tipos de consultas sql
 
Unidad1 y 2
Unidad1 y 2Unidad1 y 2
Unidad1 y 2
 
Stored procedures
Stored proceduresStored procedures
Stored procedures
 
SQL JOINS
SQL JOINSSQL JOINS
SQL JOINS
 
TABLAS Y TIPOS DE DATOS
TABLAS Y TIPOS DE DATOSTABLAS Y TIPOS DE DATOS
TABLAS Y TIPOS DE DATOS
 
base
basebase
base
 
16 17 tecnologias python oop
16 17 tecnologias python oop16 17 tecnologias python oop
16 17 tecnologias python oop
 
7.1. procedimientos almacenados
7.1.  procedimientos almacenados7.1.  procedimientos almacenados
7.1. procedimientos almacenados
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Administrador de Tabla de Símbolos
Administrador de Tabla de SímbolosAdministrador de Tabla de Símbolos
Administrador de Tabla de Símbolos
 
Programacion estructura de arboles en c
Programacion estructura de arboles en cProgramacion estructura de arboles en c
Programacion estructura de arboles en c
 

Destacado

Como ser mejores padres
Como ser mejores padresComo ser mejores padres
Como ser mejores padressaidic_1997
 
Informe de proyecto
Informe de proyectoInforme de proyecto
Informe de proyectobellaalacon
 
Socialresponsabilitiinpostcoflictareas
SocialresponsabilitiinpostcoflictareasSocialresponsabilitiinpostcoflictareas
SocialresponsabilitiinpostcoflictareasMitchel Lara
 
Evidencias de Cambio Climático en Antioquia
Evidencias de Cambio Climático en AntioquiaEvidencias de Cambio Climático en Antioquia
Evidencias de Cambio Climático en AntioquiaAdrianaGil01
 
249276085 vendedores-perros
249276085 vendedores-perros249276085 vendedores-perros
249276085 vendedores-perrosAnna Pidhayna
 
Control de asistencia
Control de asistenciaControl de asistencia
Control de asistenciaalgebragr5
 
Isla yaki unida (destinos turisticos (1))
Isla yaki unida (destinos turisticos (1))Isla yaki unida (destinos turisticos (1))
Isla yaki unida (destinos turisticos (1))David Garcia Martin
 
Edmodo informatico
Edmodo informaticoEdmodo informatico
Edmodo informaticosuamr18
 
Contestación trabajadores colegio arquitectos a vamos granada
Contestación trabajadores colegio arquitectos a vamos granadaContestación trabajadores colegio arquitectos a vamos granada
Contestación trabajadores colegio arquitectos a vamos granadaCGC72-ApoyoTrabajadores
 
Presentación leviathan - Thomas Hobbes
Presentación leviathan - Thomas HobbesPresentación leviathan - Thomas Hobbes
Presentación leviathan - Thomas HobbesLeila Musso
 
Presentación De Mi Block
Presentación De Mi Block  Presentación De Mi Block
Presentación De Mi Block Lauriitha Serna
 
Diana sanchez
Diana sanchezDiana sanchez
Diana sanchez159j159
 
Manualbloggerenmisena 100123082138-phpapp02
Manualbloggerenmisena 100123082138-phpapp02Manualbloggerenmisena 100123082138-phpapp02
Manualbloggerenmisena 100123082138-phpapp02Fhellix Ll
 
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Evelyn Anayansi
 

Destacado (20)

Flores para educar
Flores para educarFlores para educar
Flores para educar
 
Como ser mejores padres
Como ser mejores padresComo ser mejores padres
Como ser mejores padres
 
Informe de proyecto
Informe de proyectoInforme de proyecto
Informe de proyecto
 
Socialresponsabilitiinpostcoflictareas
SocialresponsabilitiinpostcoflictareasSocialresponsabilitiinpostcoflictareas
Socialresponsabilitiinpostcoflictareas
 
Evidencias de Cambio Climático en Antioquia
Evidencias de Cambio Climático en AntioquiaEvidencias de Cambio Climático en Antioquia
Evidencias de Cambio Climático en Antioquia
 
249276085 vendedores-perros
249276085 vendedores-perros249276085 vendedores-perros
249276085 vendedores-perros
 
Tarea seminario 7
Tarea seminario 7Tarea seminario 7
Tarea seminario 7
 
Control de asistencia
Control de asistenciaControl de asistencia
Control de asistencia
 
Valores jardin de niños docx
Valores  jardin de niños docxValores  jardin de niños docx
Valores jardin de niños docx
 
Isla yaki unida (destinos turisticos (1))
Isla yaki unida (destinos turisticos (1))Isla yaki unida (destinos turisticos (1))
Isla yaki unida (destinos turisticos (1))
 
Fichas de indicadores 2015 2018. bien
Fichas de indicadores 2015  2018. bienFichas de indicadores 2015  2018. bien
Fichas de indicadores 2015 2018. bien
 
Memoria descriptiva defensa
Memoria descriptiva defensaMemoria descriptiva defensa
Memoria descriptiva defensa
 
Edmodo informatico
Edmodo informaticoEdmodo informatico
Edmodo informatico
 
Contestación trabajadores colegio arquitectos a vamos granada
Contestación trabajadores colegio arquitectos a vamos granadaContestación trabajadores colegio arquitectos a vamos granada
Contestación trabajadores colegio arquitectos a vamos granada
 
Presentación leviathan - Thomas Hobbes
Presentación leviathan - Thomas HobbesPresentación leviathan - Thomas Hobbes
Presentación leviathan - Thomas Hobbes
 
Presentación De Mi Block
Presentación De Mi Block  Presentación De Mi Block
Presentación De Mi Block
 
Diana sanchez
Diana sanchezDiana sanchez
Diana sanchez
 
Estación dos
Estación dos Estación dos
Estación dos
 
Manualbloggerenmisena 100123082138-phpapp02
Manualbloggerenmisena 100123082138-phpapp02Manualbloggerenmisena 100123082138-phpapp02
Manualbloggerenmisena 100123082138-phpapp02
 
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
 

Similar a Operadores poo

Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netAntonio Palomares Sender
 
PATRONES DE DISEÑO MODELOS IMPLEMENTADOS EN CLASES .pptx
PATRONES DE DISEÑO MODELOS IMPLEMENTADOS EN CLASES  .pptxPATRONES DE DISEÑO MODELOS IMPLEMENTADOS EN CLASES  .pptx
PATRONES DE DISEÑO MODELOS IMPLEMENTADOS EN CLASES .pptxjguerraf0805910805
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en JavaAlelt2890
 
El lenguaje C++ (1).ppt
El lenguaje C++ (1).pptEl lenguaje C++ (1).ppt
El lenguaje C++ (1).pptJOSECASHUUG
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2mellcv
 
Constructor Y Destructor
Constructor Y DestructorConstructor Y Destructor
Constructor Y DestructorTecnologico
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosJosé Antonio Sandoval Acosta
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosAntonio Palomares Sender
 
Tarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfTarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfBrimmerRamrez
 

Similar a Operadores poo (20)

Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .net
 
PATRONES DE DISEÑO MODELOS IMPLEMENTADOS EN CLASES .pptx
PATRONES DE DISEÑO MODELOS IMPLEMENTADOS EN CLASES  .pptxPATRONES DE DISEÑO MODELOS IMPLEMENTADOS EN CLASES  .pptx
PATRONES DE DISEÑO MODELOS IMPLEMENTADOS EN CLASES .pptx
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
El lenguaje C++ (1).ppt
El lenguaje C++ (1).pptEl lenguaje C++ (1).ppt
El lenguaje C++ (1).ppt
 
El lenguaje C++.ppt
El lenguaje C++.pptEl lenguaje C++.ppt
El lenguaje C++.ppt
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 
manual de C#
manual de C#manual de C#
manual de C#
 
Manual c# 2
Manual c# 2Manual c# 2
Manual c# 2
 
Manual de c#
Manual de c#Manual de c#
Manual de c#
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2
 
Constructor Y Destructor
Constructor Y DestructorConstructor Y Destructor
Constructor Y Destructor
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
 
Visual basic .NET
Visual basic .NETVisual basic .NET
Visual basic .NET
 
OOSE
OOSEOOSE
OOSE
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Tarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfTarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdf
 

Último

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 

Último (20)

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 

Operadores poo

  • 1. Investigación operadores poo Dávalos Rocha Rosaura Jaqueline 4102 Programación orientado a objetos
  • 2. • Las sobrecargas de operadores permiten combinar y comparar los tipos utilizando operadores como "+", "-", "=" y "!=". Agregando sobrecargas de operadores a un tipo, se permite a los desarrolladores utilizar el tipo como si fuera un tipo primitivo integrado. La sobrecarga de operadores sólo debería realizarse cuando el significado de la operación es intuitivo para el tipo (por ejemplo, para admitir que se agreguen dos instancias de un tipo que representa un valor numérico). La sobrecarga de operadores no se debería utilizar para proporcionar un acceso directo sintáctico para las operaciones no intuitivas. • El ejemplo siguiente muestra la firma para la operación de suma de la clase DateTime • • [Visual Basic] • Public Shared Function op_Addition(ByVal d As DateTime, _ • ByVal t As TimeSpan _ • ) As DateTime Sobrecargas de operador
  • 3. Operador lógico unario • El Not (Operador, Visual Basic) realiza la negación lógica en una expresión Boolean. Produce el contrario lógico de su operando. Si la expresión se evalúa como True, Not devuelve False; si la expresión se evalúa comoFalse, Not devuelve True. Debido a que Object es la clase base de todos los tipos de referencia en .NET Framework, este comportamiento es heredado por los tipos de referencia que no reemplazan el métodoToString. • VB • Dim x, y As Booleanx = Not 23 > 14y = Not 23 > 67' The preceding statements set x to False and y to True.
  • 4. Operadores lógicos binarios • El And (Operador, Visual Basic) realiza la conjunción lógica de dos expresiones Boolean. Si ambas expresiones se evalúan como True, And devuelve True. Si al menos una de las expresiones se evalúa como False, Anddevuelve False. • El Or (Operador, Visual Basic) realiza la disyunción o inclusión lógicas de dos expresiones Boolean. Si una de las expresiones o ambas se evalúan como True, Or devuelve True. Si ninguna de las expresiones se evalúa como True, Or devuelve False. • Xor (Operador, Visual Basic) realiza la exclusión lógica de dos expresiones Boolean. Si exactamente una expresión, pero no ambas, se evalúa como True, Xor devuelve True. Si ambas expresiones se evalúan como Trueo como False, Xor devuelve False. • En el siguiente ejemplo se muestra cómo utilizar los operadores And, Or y Xor. • • • VB • Dim a, b, c, d, e, f, g As Boolean a = 23 > 14 And 11 > 8b = 14 > 23 And 11 > 8' The preceding statements set a to True and b to False. c = 23 > 14 Or 8 > 11d = 23 > 67 Or 8 > 11' The preceding statements set c to True and d to False. e = 23 > 67 Xor 11 > 8f = 23 > 14 Xor 11 > 8g = 14 > 23 Xor 8 > 11' The preceding statements set e to True, f to False, and g to False.
  • 5. Polimorfismo y Funciones Virtuales • El polimorfismo es la funcionalidad que permite a código antiguo invocar código nuevo, también permite extender el sistema sin modificar el código existente, esto se logra sobreescribiendo o redefiniendo el código, para lo cual se utilizan funciones virtuales y la palabra clave override. • Las funciones abstractas son automaticamente funciones virtuales, las cuales permiten al programador usar polimorfismo para hacer su código simple. • Virtual significa que cuando una invocación a funciones miembro, el compilador debería buscar por el tipo real del objeto y no por el tipo de la referencia, e invocar en base al tipo la función apropiada.
  • 6. • using System; public class Persona{ //Propiedades public string sNombre; public int iEdad; //Constructor public Persona(string sNombre, int iEdad){ this.sNombre = sNombre; this.iEdad = iEdad; } //Métodos virtual public string Tipo(){ return "Persona"; } } //Herencia Simple public class Empleado : Persona{ public Empleado(string sNombre, int iEdad):base(sNombre, iEdad){} override public string Tipo(){ return "Empleado"; } } class App{ //Aplicación public static void Main(){ Persona Mexicano = new Persona("Gerado Ángeles Nava", 33); Console.WriteLine("Mexicano.sNombre : " + Mexicano.sNombre); Console.WriteLine("Mexicano.iEdad : " + Mexicano.iEdad); Console.WriteLine("Mexicano.Tipo : " + Mexicano.Tipo()); Console.WriteLine("--- Arreglo de Objetos ---"); Empleado[] aProgramadores = new Empleado[2]; aProgramadores[0] = new Empleado("Bill Gates", 50); aProgramadores[1] = new Empleado("Eric S. Raymond", 60); for(int i = 0; i < aProgramadores.Length; i++){ Console.WriteLine("aProgramadores["+i+"].sNombre : " + aProgramadores[i].sNombre); Console.WriteLine("aProgramadores[" + i + "].iEdad : " + aProgramadores[i].iEdad); Console.WriteLine("aProgramadores[" + i + "].Tipo : " + aProgramadores[i].Tipo()); } } }
  • 7. • Cuando una función es declarada con la palabra reservada override significa que es la misma función que fue declarada en laclase base, si la palabra reservada override se omite el compilador podría asumir que la función no está relacionada a la función de la clase base y no despacha la función virtual (el compilador podría sugerir omitir override o agregar new) . • Cuando existe una función virtual el programador puede pasar una referencia a la clase abstracta aunque la clase derivada y el compilador podrían escribir código para invocar la versión apropiada de la función en tiempo de ejecución. • Por ejemplo, el objeto base object tiene una función virtual llamada ToString() que convierte un objeto a string. Si se invoca la función ToString() en un objeto que que no la tiene como versión propia, la versión de la función que es parte de la clase object podría ser invocada. •
  • 8. IDENTIFICACION DE PATRONES DE DISEÑO PARA LA AUTENTIFICACION EN APLICACIONES • En algunas aplicaciones, hay clases que deben ser instanciadas una sola vez. Por ejemplo, un sistema operativo debe tener solo un sistema de reloj y una compañía debe tener solo un sistema contable llamada singular o singleton. El patrón de diseño Singular (Singleton) asegura que se cree sólo una instancia de la clase y provee un método para acceder esa única instancia.
  • 9. • Todos los objetos que utilizan una instancia de una clase Singular utilizan la misma instancia Estructura Observa que los miembros estáticos de la clase están subrayados . En este patrón de diseño El atributo estático instance contiene la única instancia de la clase. El constructor es definido como private de modo que las otras clases no puedan crear instancias. El método estático getSingletonInstance regresa la única instancia de la clase. La primera vez que este método es llamado, crea la única instancia En la línea 10, la variable estática y privada singletonInstance es inicializada con una instancia de la claseICarnegieInfo —singletonInstance será la única instancia de la clase ICarnegieInfo en una aplicación.
  • 10. • En la línea 22, el constructor es definido como privado, de modo que otras clases no puedan crear instancias deICarnegieInfo . En la línea 36, la clase define un método estático llamado getSingletonInstance que regresa una referencia a la única instancia de ICarnegieInfo . a primera llamada al método getSingletonInstance crea la única instancia. • Consecuencias El patrón de diseño Singular tiene los siguientes beneficios: Una clase Singular puede controlar cómo y cuando el código cliente puede acceder a la única instancia. El código cliente no tiene la libertad de utilizar el operador new para crear una instancia de la clase Singular. En vez de eso, debe llamar a un método estático que regresa una referencia a la instancia única. Una clase Singular puede ser modificada fácilmente si los requerimientos cambian y la aplicación necesita limitar el número de instancias a un número diferente de uno.
  • 11. FABRICAS ABSTRACTAS • Contexto y problema Contexto: Debemos crear diferentes objetos, todos pertenecientes a la misma familia. Por ejemplo: las librerías para crear interfaces gráficas suelen utilizar este patrón y cada familia sería un sistema operativo distinto. Así pues, el usuario declara un Botón, pero de forma más interna lo que está creando es un BotónWindows o un BotónLinux, por ejemplo. El problema que intenta solucionar este patrón es el de crear diferentes familias de objetos. El patrón Abstract Factory está aconsejado cuando se prevé la inclusión de nuevas familias de productos, pero puede resultar contraproducente cuando se añaden nuevos productos o cambian los existentes, puesto que afectaría a todas las familias creadas.
  • 12. Estático • La estructura típica del patrón Abstract Factory es la siguiente: • Cliente: La clase que llamará a la factoría adecuada ya que necesita crear uno de los objetos que provee la factoría, es decir, Cliente lo que quiere es obtener una instancia de alguno de los productos (ProductoA, ProductoB). • AbstractFactory: Es de definición de la interfaces de las factorías. Debe de proveer un método para la obtención de cada objeto que pueda crear. ("crearProductoA()" y "crearProductoB()") • Factorías Concretas: Estas son las diferentes familias de productos. Provee de la instancia concreta de la que se encarga de crear. De esta forma podemos tener una factoría que cree los elementos gráficos para Windows y otra que los cree para Linux, pudiendo poner fácilmente (creando una nueva) otra que los cree para MacOS, por ejemplo. • Producto abstracto: Definición de las interfaces para la familia de productos genéricos. En el diagrama son "ProductoA" y "ProductoB". En un ejemplo de interfaces gráficas podrían ser todos los elementos: Botón, Ventana, Cuadro de Texto, Combo... El cliente trabajará directamente sobre esta interfaz, que será implementada por los diferentes productos concretos.
  • 13. • • Producto concreto: Implementación de los diferentes productos. Podría ser por ejemplo "BotónWindows" y "BotónLinux". Como ambos implementan "Botón" el cliente no sabrá si está en Windows o Linux, puesto que trabajará directamente sobre la superclase o interfaz. • Un ejemplo: Veremos un ejemplo didáctico y basado en el libro Head First Design Patterns, de O'Reilly. Supongamos que disponemos de una cadena de pizzerías. Para crear pizzas disponemos de un método abstracto en la clase Pizzería que será implementada por cada subclase de Pizzería. abstract Pizza crearPizza() Concretamente se creará una clase PizzeríaZona por cada zona, por ejemplo la Pizzería de New York sería PizzeriaNewYork y la de Californía PizzeríaCalifornia que implementarán el método con los ingredientes de sus zonas. Las pizzas son diferentes según las zonas. No es igual la pizza de New York que la pizza de California. Igualmente, aunque usarán los mismos ingredientes (tomate, mozzarella...) no los obtendrán del mismo lugar, cada zona los comprará donde lo tenga más cerca. Así pues podemos crear un método creador de Pizza que sea Pizza(FactoriaIngredientes fi);
  • 14. • Como vemos utilizamos la factoría abstracta (no las concretas de cada zona, como podría ser IngredientesNewYork o IngredientesCalifornia). Pizza podrá obtener los ingredientes de la factoría independientemente de donde sea. Sería fácil crear nuevas factorías y añadirlas al sistema para crear pizzas con estos nuevos ingredientes. Efectivamente, en este ejemplo cliente es Pizza y es independiente de la Factoría usada. El creador de la Pizza será el encargado de instanciar la factoría concreta, así pues los encargados de instanciar las factorías concretas serán las pizzerías locales. En PizzeríaNewYork podemos tener el método crearPizza() que realice el siguiente trabajo: Pizza crearPizza() { FactoríaIngredientes fi = new IngredientesNewYork(); Pizza pizza = new Pizza(fi); // Uso de la factoría pizza.cortar(); pizza.empaquetar(); return pizza; }
  • 15. SINGLENTOS O SINGULAR: • En algunas aplicaciones, hay clases que deben ser instanciadas una sola vez. Por ejemplo, un sistema operativo debe tener solo un sistema de reloj y una compañía debe tener solo un sistema contable llamada singular o singleton. El patrón de diseño Singular (Singleton) asegura que se cree sólo una instancia de la clase y provee un método para acceder esa única instancia. • Todos los objetos que utilizan una instancia de una clase Singular utilizan la misma instancia Estructura Observa que los miembros estáticos de la clase están subrayados . En este patrón de diseño El atributo estático instance contiene la única instancia de la clase. El constructor es definido como private de modo que las otras clases no puedan crear instancias. El método estático getSingletonInstance regresa la única instancia de la clase. La primera vez que este método es llamado, crea la única instancia En la línea 10, la variable estática y privada singletonInstance es inicializada con una instancia de la claseICarnegieInfo —singletonInstance será la única instancia de la clase ICarnegieInfo en una aplicación.
  • 16. • En la línea 22, el constructor es definido como privado, de modo que otras clases no puedan crear instancias deICarnegieInfo . En la línea 36, la clase define un método estático llamado getSingletonInstance que regresa una referencia a la única instancia de ICarnegieInfo . a primera llamada al método getSingletonInstance crea la única instancia. • Consecuencias El patrón de diseño Singular tiene los siguientes beneficios: Una clase Singular puede controlar cómo y cuando el código cliente puede acceder a la única instancia. El código cliente no tiene la libertad de utilizar el operador new para crear una instancia de la clase Singular. En vez de eso, debe llamar a un método estático que regresa una referencia a la instancia única. Una clase Singular puede ser modificada fácilmente si los requerimientos cambian y la aplicación necesita limitar el número de instancias a un número diferente de uno. •
  • 17. FACTORY METHOD O METODO DE FÁBRICA: • En diseño de software, el patrón de diseño Factory Method consiste en utilizar una clase constructora (al estilo del Abstract Factory) abstracta con unos cuantos métodos definidos y otro(s) abstracto(s): el dedicado a la construcción de objetos de un subtipo de un tipo determinado. Es una simplificación del Abstract Factory, en la que la clase abstracta tiene métodos concretos que usan algunos de los abstractos; según usemos una u otra hija de esta clase abstracta, tendremos uno u otro comportamiento.
  • 18. Estructura • Las clases principales en este patrón son el creador y el producto. El creador necesita crear instancias de productos, pero el tipo concreto de producto no debe ser forzado en las subclases del creador, porque entonces las posibles subclases del creador deben poder especificar subclases del producto para utilizar. La solución para esto es hacer un método abstracto (el método de la fábrica) que se define en el creador. Este método abstracto se define para que devuelva un producto. Las subclases del creador pueden sobrescribir este método para devolver subclases apropiadas del producto. Ejemplo de código (en Java)
  • 19. • // Definimos la clase abstracta constructora public abstract class Creator{ // Operación que realiza public Product anOperation() { return factoryMethod(); } // Definimos método abstracto protected abstract Product factoryMethod(); } Ahora definimos el creador concreto. public class ConcreteCreator extends Creator{ protected Product factoryMethod() { return new ConcreteProduct(); } } Y definimos el producto y su implementación concreta. public interface Product{ public void operacion(); } public class ConcreteProduct implements Product{ public void operacion(){ System.out.println("Una operación de este producto"); } } Y un ejemplo de uso : public static void main(String args[]){ Creator aCreator; aCreator = new ConcreteCreator(); Product producto = aCreator.anOperation(); producto.operacion();
  • 20. PROTOTIPO: • Programación basada en prototipos es un estilo de programación orientada a objetos en el cual, las "clases" no están presentes, y la re-utilización de procesos (conocida como herencia en lenguajes basados en clases) se obtiene a través de la clonación de objetos ya existentes, que sirven de prototipos, extendiendo sus funcionalidades. Este modelo es conocido como orientado a prototipos, o programación basada en instancias. El original (y el más canónico) ejemplo de lenguaje prototipado es el lenguaje Self, desarrollado por David Ungar y Randall Smith. Sin embargo el paradigma sin clases está comenzando a popularizarse y ya ha sido implementado en lenguajes de programación como JavaScript, Cecil, NewtonScript, Ío, MOO, REBOL y varios otros.
  • 21. Analógicamente • Un ejemplo de instancia en un lenguaje de programación visual, sería tomar o arrastrar un objeto de la barra de herramientas o de la lista de librerías y colocarlo en el escritorio o escenario de trabajo (estamos creando una instancia de ese objeto, una copia). Si arrastramos 10 botones al entorno visual de trabajo, estamos creando una instancia del botón original, si a cada botón le cambiamos el nombre, tendremos 10 botones que heredan las mismas propiedades y métodos del objeto original. Tenemos como resultado que con un solo botón hicimos 10 y nuestro archivo pesara como si tuviese uno solo. De esta forma, partiendo de lo que conforma a un objeto original (propiedades y métodos) se reutilizan sus funciones creando una instancia del mismo en distintas partes del programa donde se necesite. Si el objeto original cambia o le es agregado algún nuevo atributo, las instancias lo heredaran puesto que son una copia del objeto original.
  • 22. Comparación con el modelo basado en clases • En lenguajes basados en clases los objetos pueden ser de dos tipos generales, las clases y las instancias. Las clases definen la disposición y la funcionalidad básicas de los objetos, y las instancias son objetos "utilizables" basados en los patrones de una clase particular. En este modelo, las clases actúan como colecciones de comportamiento (métodos) y estructuras que son iguales para todas las instancias, mientras que las instancias llevan los datos de los objetos. La distinción del papel se basa así sobre todo en una distinción entre la estructura y el comportamiento en un lado, y el estado en el otro.
  • 23. • Los entusiastas de la programación basada en prototipos a menudo argumentan que los lenguajes basados en clases animan un modelo del desarrollo que se centra primero en la taxonomía y las relaciones entre las clases. En cambio, la programación basada en prototipos intenta animar al programador que se centre en el comportamiento de un cierto sistema de ejemplos y después de clasificar estos objetos en objetos arquetipos que se utilizan más adelante en una manera similar a las clases. Como tal, muchos sistemas basados en prototipos animan la alteración de prototipos durante tiempo de ejecución, mientras que solamente muy pocos sistemas orientados a objeto, basados en clase (como el primer sistema orientados al objetos dinámicos, Smalltalk) permiten que las clases sean alteradas durante la ejecución de un programa. Mientras que basan la amplia mayoría de sistemas basados en prototipos se hacen con lenguajes de programación interpretados y de tipos de datos dinámicos, es importante precisar que los sistemas de tipos de datos estáticos son técnicamente factibles. El lenguaje de programación de Omega que es basado en prototipos es un ejemplo de tal sistema, aunque según el Web site de Omega, Omega no es exclusivamente de tipos de datos estáticos, pero su "compilador puede elegir utilizar el tipo de dato estático donde es posible esto y puede mejorar la eficacia del programa.”
  • 24. APLICACIÓN DE METODOS PARA LA OPERACIÓN CONTINUA DEL SISTEMA • CIFRADO DE DATOS: • El cifrado de datos se puede entender como el hecho de guardar algo valioso dentro de una caja fuerte cerrada con llave. Los datos confidenciales se cifran con un algoritmo de cifrado y una clave que los hace ilegibles si no se conoce dicha clave. • Las claves de cifrado de datos se determinan en el momento de realizar la conexión entre los equipos. El uso del cifrado de datos puede iniciarse en su equipo o en el servidor al que se conecta. Conexiones de red admite dos tipos de cifrado: • Microsoft MPPE, que utiliza cifrado RSA RC4. • Una implementación de Seguridad de Protocolo Internet (IPSec) que utiliza cifrado de Estándar de cifrado de datos (DES).
  • 25. INICIALIZACION DE OBJETOS: • Para declarar o inicializar variables o ya sean objetos de referencia, el proceso es muy parecido al de crear las variables de tipo primitivo. La única diferencia es que se debe crear un objeto de la clase que apunta a la variable de referencia ante de que podamos inicializar dicho objeto. Para poder obtener este proceso debemos seguir los siguientes pasos: <!--[if !supportLists]-->- <!--[endif]-->Declara una referencia a un objeto, esto se hace mediante la especificación de un identificador y del tipo de objeto al que se quiere hacer referencia, que es la clase del objeto.
  • 26. • <!--[if !supportLists]-->- <!--[endif]-->Crear nuestro nuevo objeto mediante la palabra reservada “new”. <!--[if !supportLists]-->- <!--[endif]-->Inicializar la variable que referencia al objeto asignándole el objeto. Veamos un ejemplo donde declaramos nuestra variable que referencia a un objeto e instanciamos nuestro objeto. public class Fabrica { public static void main(String agrs[]) { Auto miAuto; miAuto = new Auto(); miAuto.mostrarInformacionAuto(); } } Bien, tenemos la clase Fabrica la cual contiene el método estático main, en donde nosotros instanciamos un objeto de tipo auto, el cual se llama miAuto y con el podemos invocar un método de la clase Auto que en este caso fue el método mostrarInformacionAuto().
  • 27. DESTRUCCION DE OBJETOS: • La destrucción de objetos es una función virtual que necesita ser implementada por una clase derivada que no sea abstracta. Las clases que contienen métodos virtuales puros son denominadas "abstractas". Éstas no pueden ser instanciadas directamente, y una subclase de una clase abstracta sólo puede ser instanciada directamente si todos los métodos virtuales puros han sido implementados por esa clase o una clase padre.
  • 28. • Las destrucciones de objetos normalmente tienen una declaración (cabecera) pero no tienen definición (implementación). Como ejemplo, una clase base abstracta como "SimboloMatematico" puede ofrecer una función virtual pura como hazOperacion, y las clases derivadas "Suma" y "Resta" pueden implementar hazOperacion para ofercer implementaciones concretas. La implementación de hazOperacion no tendría sentido en la clase "SimboloMatematico" porque "SimboloMatematico" es un concepto abstracto cuyo comportamiento es definido solamente por cada tipo (subclase) de "SimboloMatematico" dado. De forma similar, una subclase dada de "SimboloMatematico" no sería completa sin una implementación de hazOperacion. Aunque los métodos virtuales puros normalmente no tienen implementación en la clase que los declara, en C++ permite hacer esto, ofreciendo un comportamiento por omisión en el que la clase derivada puede delegar si es apropiado.
  • 29. • Las destrucciones de objetos también son utilizadas donde las declaraciones de métodos se utilizan para definir una interfaz para la que las clases derivadas proveerán todas las implementaciones. Una clase abstracta sirviendo como interfaz contiene sólo una destrucción de objetos, y ningún miembro de datos (variables, constantes, etc.) ni métodos ordinarios. El uso de clases puramente abstractas como interfaces funciona en C++ ya que éste soporta herencia múltiple. Debido a que muchos lenguajes orientados a objetos no soportan herencia múltiple, normalmente ofrecen un mecanismo por separado para hacer interfaces. Esto es así por ejemplo en Java.
  • 30. MANEJO DE EXPRESIONES: • Una excepción en términos de lenguaje de programación es la indicación de un problema que ocurre durante la ejecución de un programa. Sin embargo la palabra excepción se refiere que este problema ocurre con poca frecuencia generalmente cuando existe algún dato o instrucción que no se apega al funcionamiento del programa por lo que se produce un error. El manejo de excepciones permite al usuario crear aplicaciones tolerantes a fallas y robustos (resistentes a errores) para controlar estas excepciones y que pueda seguir ejecutando el programa sin verse afectado por el problema. En lenguaje java estas excepciones pueden manejarse con las clases que extienden el paquete Throwable de manera directa o indirecta, pero existen diversos tipos de excepciones y formas para manejarlas. Uso del manejo de excepciones El manejo de excepciones ayuda al programador a remover el código para manejo de errores de la línea principal de ejecución, además se pude elegir entre manejar todas las excepciones, las de cierto tipo o de las de grupos relacionados, esto hace que la probabilidad de pasar por alto los errores se reduzca y a la vez hace los programas más robustos.
  • 31. Limpieza de pila • En ocasiones cuando se hace lanza una excepción, pero no se atrapa en un enlace específico, la pila de llamadas se limpia y el programa intenta volverlo a atrapar en el siguiente bloque, esto se conoce como limpia de pila. Este proceso hace que el método en el que no se atrapó la excepción termina, todas sus variables quedan fuera del enlace y el control regresa a la instrucción que originalmente la invocó. La limpieza de pila de repetirá hasta que la excepción pueda ser atrapada porque de lo contrario se producirá un error a la hora de compilar.
  • 32. Aserciones • Las aserciones ayudan a asegurar la validez del programa al atrapar los errores potenciales e identificar los posibles errores lógicos del desarrollo. Estas pueden escribirse como comentarios para apoyar a la persona que desarrolla el programa. Algunos ejemplos son: Precondiciones y pos condiciones Estas características son utilizadas por los programadores para hacer un análisis de lo esperado del programa antes y después de su ejecución. Son importantes porque gracias a ellas se pueden detectar posibles fallas en el programa y corregirlas. Las precondiciones son verdaderas cuando se invoca a un método, estas describen las características del método y las expectativas que se tienen en el estado actual del programa. Si no se cumplen las precondiciones el comportamiento del método es indefinido por lo que se lanza una excepción que esté preparada o continuar con el programa esperando el error. Las pos condiciones describen las restricciones en el entorno y cualquier efecto secundario del método. Es recomendable escribirlas para saber que esperar en un futuro si es que se hacen modificaciones. Las aserciones ayudan a asegurar la validez del programa al atrapar los errores potenciales e identificar los posibles errores lógicos del desarrollo. Estas pueden escribirse como comentarios para apoyar a la persona que desarrolla el programa. Algunos ejemplos son: Precondiciones y pos condiciones Estas características son utilizadas por los programadores para hacer un análisis de lo esperado del programa antes y después de su ejecución. Son importantes porque gracias a ellas se pueden detectar posibles fallas en el programa y corregirlas. Las precondiciones son verdaderas cuando se invoca a un método, estas describen las características del método y las expectativas que se tienen en el estado actual del programa. Si no se cumplen las precondiciones el comportamiento del método es indefinido por lo que se lanza una excepción que esté preparada o continuar con el programa esperando el error. Las pos condiciones describen las restricciones en el entorno y cualquier efecto secundario del método. Es recomendable escribirlas para saber que esperar en un futuro si es que se hacen modificaciones.
  • 33. • El manejo de excepciones ayuda a lidiar con los errores de una aplicación por medio de la manipulación del código para hacer programas más robustos. Además existen herramientas que ayudan a manejarlas tal es el caso de los bloques tratar que encierran el código que puede lanzar una excepción y los bloques atrapar que lidian con las excepciones que surjan. También existen técnicas que el programador utiliza para conocer el posible funcionamiento del programa y detectar los errores que pueda contener. Ejemplo de manejo de excepción en Java: import java.io.IOException;
  • 34. • // ... public static void main(String[] args) { try { // Se ejecuta algo que puede producir una excepción } catch (IOException e) { // manejo de una excepción de entrada/salida } catch (Exception e) { // manejo de una excepción cualquiera } finally { // código a ejecutar haya o no excepción } } Ejemplo de manejo de excepción en Delphi: procedure TForm1.Button1Click(Sender : TObject); begin try try a := b / c; finally // Este código siempre se ejecuta, independientemente de si ocurre o no una excepción. end; except on e:EZeroDivide do // Manejo de la excepción División por cero. on e:Exception do // Manejo de una excepción "genérica". end; end;
  • 35. • Ejemplo de manejo de excepción en Python: try: result = x / y except ZeroDivisionError: print "division by zero!" else: print "result is", result finally: print "executing finally clause" Ejemplo de manejo de excepcion en Ada type T_Matriz is array (Positive range <>, Positive range <>) of Integer; procedure Rellenar_Matriz (Matriz : in T_Matriz; K : in Integer; Q : in Integer); is begin begin Matriz (K,Q) := 3; exception when Constraint_Error => Put_Line ("Las posiciones se salen del rango de la matriz"); end; end Rellenar_Matriz;