benita ppp unidad 1

42
INSTITUTO TECNOLÓGICO DE SALINA CRUZ Materia: Benita Villalobos Pérez docente: M.C Susana Mónica Román Nájera Materia: Estructura y Organización de datos Tema: Unidad 2 Carrera: TIC´S grupo: 3E

Upload: tatiizz-villalobos

Post on 10-Aug-2015

130 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Benita ppp unidad 1

INSTITUTO TECNOLÓGICO DE SALINA CRUZMateria:

Benita Villalobos Pérez docente:

M.C Susana Mónica Román NájeraMateria:

Estructura y Organización de datosTema:

Unidad 2 Carrera: TIC´S

grupo: 3E

Page 2: Benita ppp unidad 1

2.1. Abstracción en lenguajes de programación. 2.2. Tipos abstractos de datos. 2.3. Especificación de los TAD. 2.4. Clases y objetos. 2.5. Declaración de una clase. 2.6. Paquetes. 2.7. Constructores. 2.8. Recolección de objetos. 2.9. Objeto que envía el mensaje: this. 2.10. Miembros static de una clase. 2.11. Clase Object. 2.12. Tipos abstractos de datos en Java.

TEMAS

Page 3: Benita ppp unidad 1

Comprender mas a fondo todos los temas que viene en el libro y así poder aumentar nuestro conocimiento sobre las estructuras de datos y sus funciones para llevarlos a la practica.

OBJETIVO

Page 4: Benita ppp unidad 1

2.1 ABSTRACCIO

N DE

LENGUAJES D

E

PROGRAMACION

Page 5: Benita ppp unidad 1

Son las herramientas mediante las cuales los diseñadores de lenguajes pueden implementar los modelos abstractos.

La abstracción ofrecida por los lenguajes de programación se puede dividir en dos categorías: abstracción de datos (perteneciente a los datos) y abstracción de control (perteneciente a las estructuras de control).

Page 6: Benita ppp unidad 1

Abstracciones de controlLos microprocesadores ofrecen directamente sólo dos mecanismos para controlar el flujo y ejecución de las instrucciones: secuencia y salto.

Los primeros lenguajes de programación de alto nivel introdujeron las estructuras de control: sentencias de bifurcación (if) y bucles

(for, while, do-loop, etc.).

Las estructuras de control describen el orden en el que se ejecutan las sentencias o grupos de sentencia (unidades de programa). Las unidades de programa se utilizan como bloques básicos de la clásica descomposición “descendente”.

Page 7: Benita ppp unidad 1

La abstracción de datos es la técnica de programación que permite inventar o definir nuevos tipos de datos (tipos de datos definidos por el usuario) adecuados a la aplicación que se desea realizar.

La abstracción de datos es una técnica muy potente que permite diseñar programas más cortos, legibles y flexibles.

La esencia de la abstracción es similar a la utilización de un tipo de dato, cuyo uso se realiza sin tener en cuenta cómo está representado o implementado.

Page 8: Benita ppp unidad 1

2.2 TIPOS DE D

ATOS

ABSTRACTOS

Page 9: Benita ppp unidad 1

Un tipo abstracto es un tipo de dato que consta de datos(estructuras de datos propias) y operaciones que se pueden realizar sobre ellos. Un TAD se compone de estructuras de datos y los procedimientos o funciones que manipulan esas estructuras de datos.

Page 10: Benita ppp unidad 1

Un tipo abstracto de datos puede definirse mediante la ecuación:

TAD = Representación (datos) + Operaciones (funciones y procedimientos)

Un tipo abstracto de datos es un modelo (estructura) con un número de operaciones que afectan a ese modelo.

Page 11: Benita ppp unidad 1

2.3 ESPECIFICACION D

E LOS

TAD

Page 12: Benita ppp unidad 1

El objetivo de la especificación es describir el comportamiento del TAD; consta de dos partes, la descripción matemática del conjunto de datos y la de las operaciones definidas en ciertos elementos de ese conjunto de datos.

La especificación del TAD puede tener un enfoque informal, que describe los datos y las operaciones relacionadas en lenguaje natural. Otro enfoque mas riguroso, la especificación formal, supone suministrar un conjunto de axiomas que describen las operaciones en su aspecto

sintáctico y semántico.

Page 13: Benita ppp unidad 1

Especificación informal de un TAD

Consta de dos partes:

• Detallar en los datos del tipo los valores que pueden tomar.

• Describir las operaciones relacionándolas con los datos.

Especificación formal de un TAD

La especificación formal proporciona un conjunto de axiomas que describen el comportamiento de todas las operaciones.

La descripción ha de incluir una parte de sintaxis, en cuanto a los tipos de los argumentos y al tipo del resultado, y una parte de semántica, donde se detalla la expresión del resultado que se obtiene para unos valores particulares de los argumentos.

La especificación formal ha de ser lo bastante potente para que cumpla el objetivo de verificar la corrección de la implementación del TAD.

Page 14: Benita ppp unidad 1

2.4 Clase

s y objeto

s

Page 15: Benita ppp unidad 1

¿QUÉ SON OBJETOS?

En el mundo real, las personas identifican los objetos como cosas que pueden ser percibidas por los cinco sentidos. Los objetos tienen propiedades específicas, como posición, tamaño, color, forma, textura, etc. que definen su estado. Los objetos también poseen ciertos comportamientos que los hacen diferentes de otros objetos.

Booch define un objeto como “algo que tiene un estado, un comportamiento y una identidad”.

Page 16: Benita ppp unidad 1

¿QUÉ SON CLASES?

En términos prácticos, una clase es un tipo definido por el usuario. Las clases son los bloques de construcción fundamentales de los programas orientados a objetos.

Booch define una clase como “un conjunto de objetos que comparten una estructura y un comportamiento comunes”.

Una clase contiene la especificación de los datos que describen un objeto junto con la descripción de las acciones que un objeto conoce cómo ha de ejecutar. Estas acciones se conocen como servicios o métodos. Una clase incluye también todos los datos necesarios para describir los objetos creados a partir de la clase.

Estos datos se conocen como atributos, variables o variables instancia. El término atributo se utiliza en análisis y diseño orientado a objetos, y el término variable instancia se suele utilizar en programas orientados a objetos.

Page 17: Benita ppp unidad 1

La definición de una clase significa que se debe dar a la misma un nombre, dar nombre también a los elementos que almacenan sus datos y describir los métodos que realizarán las acciones consideradas en los objetos.

Las definiciones o especificaciones no son un código de programa ejecutable. Se utilizan para asignar almacenamiento a los valores de los atributos usados por el programa y reconocer los métodos que utilizará el programa. Normalmente, se sitúan en archivos formando los denominados packages, se utiliza un archivo para varias clases que están relacionadas

Page 18: Benita ppp unidad 1

2.5 Declaració

n de un

objeto

Page 19: Benita ppp unidad 1

Una vez que una clase ha sido definida, un programa puede contener una instancia de la clase, denominada objeto de la clase. Un objeto se crea con el operador new aplicado a un constructor de la clase.

Un objeto de la clase Punto inicializado a las coordenadas (2,1) sería:

new Punto(2,1);

El operador new crea el objeto y devuelve una referencia al objeto creado. Esta referencia se asigna a una variable del tipo de la clase. El objeto permanecerá vivo siempre que esté referenciado por una variable de la clase que es instancia.

Edad f = new Edad();

Page 20: Benita ppp unidad 1

2.6 Paquetes

Page 21: Benita ppp unidad 1

Los paquetes son la forma que tiene Java de organizar los archivos con las clases necesarias para construir las aplicaciones. Java incorpora varios paquetes, por ejemplo:

java.lang o java.io,

Con las clases básicas para construir programas: System, String, Integer ...

package NombrePaquete;

Page 22: Benita ppp unidad 1

La sentencia package se utiliza para este cometido. En primer lugar se debe incluir la sentencia package como primera línea del archivo fuente de cada una de las clases del paquete.

Por ejemplo, si las clases Lápiz, Bolígrafo y Folio se van a organizar formando el paquete escritorio, el esquema a seguir es el siguiente:

// archivo fuente Lapiz.java

package escritorio;

public class Lápiz

{

// miembros de clase Lápiz

} // archivo fuente Boligrafo.java

package escritorio;

public class Bolígrafo

{

// miembros de clase Bolígrafo

}

// archivo fuente Folio.java

package escritorio;

public class Folio

{

// miembros de clase Folio

Page 23: Benita ppp unidad 1

Las clases que se encuentran en los paquetes se identifican utilizando el nombre del paquete, el selector punto (.) y, a continuación, el nombre de la clase. Por ejemplo, la declaración de la clase Arte con atributos de la clase PrintStream (paquete java.io) y Lápiz (paquete escritorio):

public class Arte

{

private java.io.PrintStream salida;

private escritorio.Lapiz p;

}

Page 24: Benita ppp unidad 1

La sentencia import facilita la selección de una clase, permite escribir únicamente su nombre,

evitando el nombre del paquete. La declaración anterior se puede abreviar:

import java.io.PrintStream;

import escritorio.*;

public class Arte

{

private PrintStream salida;

private Lápiz p;

}

La sentencia import debe aparecer antes de la declaración de las clases, a continuación de la

sentencia package.

Page 25: Benita ppp unidad 1

2.7 Constructores

Page 26: Benita ppp unidad 1

Un constructor es un método que se ejecuta automáticamente cuando se crea un objeto de una clase. Sirve para inicializar los miembros de la clase.

El constructor tiene el mismo nombre que la clase. Cuando se define no se puede especificar un valor de retorno, nunca devuelve un valor. Sin embargo, puede tomar cualquier número de argumentos.

Reglas

1. El constructor tiene el mismo nombre que la clase.

2. Puede tener cero o más argumentos.

3. No tiene tipo de retorno.

Page 27: Benita ppp unidad 1

Constructor por defecto

Un constructor que no tiene parámetros se llama constructor por defecto. Un constructor por

defecto normalmente inicializa los miembros dato de la clase con valores por defecto.

Regla

Java crea automáticamente un constructor por defecto cuando no existen otros constructores.

Tal constructor inicializa las variables de tipo numérico (int, float ...) a cero, las variables de tipo boolean a true y las referencias a null.

Page 28: Benita ppp unidad 1

Constructores sobrecargados

Al igual que se puede sobrecargar un método de una clase, también se puede sobrecargar el constructor de una clase. De hecho, los constructores sobrecargados son bastante frecuentes y proporcionan diferentes alternativas para inicializar objetos.

Regla

Para prevenir a los usuarios de la clase de crear un objeto sin parámetros, se puede:

(1) omitir el constructor por defecto, o bien

(2) hacer el constructor privado.

Page 29: Benita ppp unidad 1

2.9 Objeto que envía el

mensaje this

Page 30: Benita ppp unidad 1

this es una referencia al objeto que envía un mensaje, o simplemente, una referencia al objeto que llama un método (este no debe ser static). Internamente se define:

final NombreClase this;

Page 31: Benita ppp unidad 1

Seleccionar explícitamente un miembro de una clase con el fin de dar mas claridad o de evitar colisión de identificadores.

Por ejemplo:

class Triangulo

{

private double base;

private double altura;

public void datosTriangulo(double base, double altura)

{

this.base = base;

this.altura = altura;

}

// ...

}

Se ha evitado con this la colisión entre argumentos y variables instancia.

Page 32: Benita ppp unidad 1

2.10 Miembros static de un

objeto

Page 33: Benita ppp unidad 1

Cada instancia de una clase, cada objeto, tiene su propia copia de las variables de la clase. Cuando interese que haya miembros que no estén ligados a los objetos sino a la clase y, por tanto, sean comunes a todos los objetos, estos se declaran static.

Page 34: Benita ppp unidad 1

Las variables de clase static son compartidas por todos los objetos de la clase. Se declaran de igual manera que otra variable, añadiendo como prefijo la palabra reservada static.

Por ejemplo:

public class Conjunto

{

private static int k = 0;

static Totem lista = null;

// ...

}

Page 35: Benita ppp unidad 1

2.11 Clase object

Page 36: Benita ppp unidad 1

Object es la superclase base de todas las clases de Java; toda clase definida en Java hereda de la clase Object y, en consecuencia, toda variable referencia a una clase se convierte, automáticamente, al tipo Object.

Por ejemplo:

Object g;

String cd = new String("Barranco la Parra");

Integer y = new Integer(72); // objeto inicializado a 72

g = cd; // g referencia al mismo objeto que cd

g = y; // g ahora referencia a un objeto Integer

La clase Object tiene dos métodos importantes: equals() y toString(). Generalmente, se redefinen en las clases para especializarlos.

Page 37: Benita ppp unidad 1

equals()

Compara el objeto que hace la llamada con el objeto que se pasa como argumento, devuelve true si son iguales.

boolean equals(Object k);

El siguiente ejemplo compara dos objetos; la comparación es true si contienen la misma cadena.

String ar = new String("Iglesia románica");

Page 38: Benita ppp unidad 1

toString()

Este método construye una cadena, que es la representación del objeto, y devuelve la cadena.

Normalmente, se redefine en las clases para dar así detalles explícitos de los objetos de la clase.

String toString()

Por ejemplo, un objeto Double llama al método toString() y asigna la cadena a una variable.

Double r = new Double(2.5);

String rp;

rp = r.toString();

Page 39: Benita ppp unidad 1

2.12 Tipos abstr

actos d

e

datos

Page 40: Benita ppp unidad 1

Los tipos abstractos de datos (TAD) describen un conjunto de objetos con la misma representación y comportamiento. Los tipos abstractos de datos presentan una separación clara entre la interfaz externa de un tipo de datos y su implementación interna.

La implementación de un tipo abstracto de datos está oculta. Por consiguiente, se pueden utilizar implementaciones alternativas para el mismo tipo abstracto de dato sin cambiar su interfaz.

La especificación de un tipo abstracto de datos se puede hacer de manera informal, o bien, de forma mas rigurosa, una especificación formal. En la especificación informal se describen literalmente los datos y la funcionalidad de las operaciones.

Page 41: Benita ppp unidad 1

La especificación formal describe los datos, la sintaxis y la semántica de las operaciones, considerando ciertas operaciones como axiomas, que son los constructores de nuevos datos.

Una buena especificación formal de un tipo abstracto de datos debe poder verificar la bondad de la implementación.

En la mayoría de los lenguajes de programación orientados a objetos, y en particular en Java, los tipos abstractos de datos se implementan mediante clases.

Page 42: Benita ppp unidad 1

Este capitulo trata mas que nada sobre las clases y objetos, sus métodos, sus atributos, como se declaran durante la ejecución de un programa para no poder tener errores trata mas que nada una recolección de información sobre los temas vistos el semestre anterior.

CONCLUSIONES