Unidad I : Unidad I Introducción a Java, Herencia y Arreglos
Introducción. Conceptos Básicos : Introducción. Conceptos Básicos Aspectos generales de Java
Tipos de datos
Ámbito
Clases y Objetos
Variables de clase y de Instancia
Constructores
Paquetes
Introducción. Conceptos avanzados de Java : Introducción. Conceptos avanzados de Java Herencia
Clases Abstractas
Interfaces
Unidad I. Tipos de datos definidos por el usuario : Unidad I. Tipos de datos definidos por el usuario Arreglos simples
Arreglos de Objetos
Introducción : Introducción Conceptos Básicos de Java
Que es Java? : Que es Java? Para que se utiliza?
Que tipo de programación maneja?
Cuales son sus características principales?
Ejemplo de un programa
Slide 7 : Tipos de datos En Java existen dos tipos de datos:
Primitivos.
Referencia.
Un variable de tipo primitivo contiene un solo valor de un tamaño y formato apropiado.
Una referencia es una dirección a un objeto, arreglo o interfaz. (Aunque Java no maneja las direcciones físicas de la plataforma real).
Slide 8 : Ejemplo de datos primitivos y de referencia public static void main (String args[]) {
int counter;
counter = 10;
Shirt myShirt = new Shirt ( );
}
Slide 9 : Ámbito Es la región de un programa dentro de la cual la variable puede ser referida por su nombre simple.
Visibilidad se aplica solamente a las variables de instancia y determina si la variable puede utilizarse fuera de la clase en la cual es declarada. Se establece mediante un modificador de acceso.
Slide 10 : Ámbito
Clases y Objetos : Clases y Objetos Que es una clase? En el software orientado a objetos es posible tener muchos objetos que compartan características comunes: clientes, facturas, pedidos, artículos, notas de venta, pagos, cuentas, etc.
Una clase software es una plantilla que define las variables de instancia y métodos de instancia de todos los objetos (instancias de clase ) que forman la colección de objetos.
A partir de una clase es posible crear objetos que compartan el mismo comportamiento, pero que cada uno de ellos posea un estado particular distinto.
Slide 12 : Clases y objetos Crear Clase Bicicleta
Slide 13 : Variables de clase Además de las variables de instancia, de las cuales cada objeto posee un conjunto de las mismas; la clase puede poseer variables propias cuyo valor es único para todos los objetos de la clase.
Estas variables son conocidas como variables de clase, y pueden considerarse como “variables globales” a todos los objetos de la clase.
Las variables de clase en java se declaran con la palabra “static”.
Declarando variables estáticas (de clase) : public class Student {
//class variables
static int maxIdAssigned;
//instance variable
private int id;
//constructor
public Student() {
this.id = maxIdAssigned;
maxIdAssigned++;
}
} Declarando variables estáticas (de clase)
Slide 15 : Ejemplo public class Punto {
private int x=0;
private int y=0;
public static int totalPuntos =0;
Punto (int _x, int _y){
x=_x;
y=_y;
totalPuntos++;
}
public void setx(int _x){
x= _x;
}
public String toString (){
return “(”+x+”,”+y+”)”;
}
} public class UsaPunto {
public static void main(String[] args){
Punto punto1= new Punto(2,1);
Punto punto2 = new Punto(5,5);
Punto punto3 = punto1;
Punto[] puntos = {punto1,punto2};
System.out.println(Arrays.toString(puntos));
System.out.println(“Puntos creados “+ Punto.totalPuntos);
}
}
Métodos de clase (static) : También es posible que una clase tenga asociados métodos. Estos métodos se pueden considerar como si fueran rutinas que están asociadas a la clase y no a un objeto en particular.
Algunas de las clases de la API de Java poseen estos métodos de clase como una forma de agrupar servicios comunes. Ej. La clase Math.
Un método declarado estático es un método de clase.
Los métodos estáticos solo pueden operar sobre variables de clase y NO pueden accesar las variables de instancia. Métodos de clase (static)
static (métodos de clase) : class AnIntegerNamedX {
int x;
public static int x() {
return x;
}
public static void setX(int newX) {
x = newX;
}
} // ERROR de compilacion
AnIntegerNamedX.java:4: Can't make a static reference to
nonstatic variable x in class AnIntegerNamedX. static int x; static (métodos de clase)
Ejemplo Métodos de la Clase : public class Slogan {
private String phrase;
private static int count = 0;
public Slogan (String str) {
phrase = str;
count++;
}
public String toString() {
return phrase;
}
public static int getCount () {
return count;
}
} Ejemplo Métodos de la Clase Crear una clase que 3 objetos a partir de esta clase y los presente por pantalla
Slide 19 : Usando Miembros estáticos
Slide 20 : // Determines the roots of a quadratic equation.
public class Quadratic {
public static void main (String[] args) {
int a, b, c; // ax^2 + bx + c
a = 5; // the coefficient of x squared
b = 7; // the coefficient of x
c = 2; // the constant
// Use the quadratic formula to compute the roots.
// Assumes a positive discriminant.
double discriminant = Math.pow(b, 2) - (4 * a * c);
double root1 =((-1*b)+ Math.sqrt(discriminant))/(2 * a);
double root2 =((-1*b)-Math.sqrt(discriminant))/ (2 * a);
System.out.println ("Root #1: " + root1);
System.out.println ("Root #2: " + root2);
}
} // ver clase producto y usaproducto
Slide 21 : Cuando es necesario declarar métodos o variables estáticas (de clase) Cuando no es importante realizar alguna operación en un objeto individual o asociar la variable dentro de un objeto especifico.
Cuando es necesario acceder a la variable o método antes de la inicialización del objeto.
Cuando el método o variable no esta asociado a un objeto, pero el elemento forme parte de una utilidad, por ejemplo de la manera en que se usa la clase Math.
Constructores : Constructores Los constructores deben tener el mismo nombre de la clase.
No es obligatorio definir un constructor para la clase. Si no se hace, el Java runtime system provee uno por “default”, el cual crea la instancia de la clase.
Slide 23 : public class Hat {
private String type;
public Hat(String hatType) {
type = hatType;
} public class Order {
Hat hat1 = new Hat(“Fedora”);
} Ejemplo Constructores
Slide 24 : class animal{
int edad;
String nombre;
public animal(){
}
public animal(int _edad, String _nombre){
edad = _edad;
nombre = _nombre;
}
} Escribir una clase de ejemplo con 2 constructores
Preguntas de Repaso : Preguntas de Repaso En que casos java crea el constructor por default
Slide 26 : Describe una posible salida del código que se presenta:
Slide 27 : Cual es el resultado?
Slide 28 : Cual es el resultado?
Slide 29 : Cual seria el resultado de compilar y ejecutar este programa?
Slide 30 : Que pasa al compilar y ejecutar el siguiente código:
Cual de los siguientes declaran el método main de forma correcta: : Cual de los siguientes declaran el método main de forma correcta:
Que esta mal en este código? : Que esta mal en este código?
Paquetes : Paquetes Los paquetes ayudan a manejar la complejidad de los componentes en las aplicaciones.
Facilitan la reutilización de software
Proporcionan una convención para nombres de clase únicos.
Java utiliza la palabra “package” como la primera linea en un programa, para indicar el lugar en donde se almacenaran las clases de las aplicaciones.
Java utiliza los archivos de los directorios del sistema para almacenar los paquetes.
Los desarrolladores de Java utilizan los paquetes para conjuntar clases que tienen usos o aplicaciones comunes, por ejemplo un paquete declarado como:
package java.awt.image;
Almacena en java/awt/image todos las clases relacionadas con el manejo de imágenes.
Slide 34 : paquete 1 paquete 2 Paquetes Programa de ejemplo: Balance.java
Slide 35 : Ejercicios de Ejemplo Escriba una clase que declare los atributos de una clase que describa los atributos de una figura geométrica y calcule su área.
Escriba una clase en donde se declare un método que reciba como parámetros 3 números y que retorne el mayor.
Conceptos Avanzados de Java : Conceptos Avanzados de Java Herencia, Clases Abstractas, Interfaces
Slide 37 : Que es herencia? Herencia*. Derecho a heredar.
Heredar*. Recibir los bienes, derechos y acciones de una persona. * Diccionario Pequeno Larousse Ilustrado, Ed. Larousse 2003.
Herencia : Herencia es el acto de derivar una nueva clase de una ya existente.
La herencia es una técnica fundamental para organizar y crear clases.
Incrementa la reutilización de código al desarrollar nuevos programas.
Se pueden crear referencias polimórficas a partir de una jerarquía de clases definida con herencia. Herencia
Slide 39 : Herencia Reutilización de software
Organización jerárquica
Superclase (clase padre)
Subclase (clase derivada)
Ejecución dinámica a través de mensajes
Acceso protegido para especializadores
Sobreescritura (especialización de comportamiento)
Herencia Simple : Solo existe una clase padre. Java solo soporta la herencia simple Herencia Simple
Herencia Múltiple : Existen muchas clases padre. La herencia Multiple de
implementación puede generar el
“Problema Diamante” Herencia Múltiple
Slide 42 : Herencia en Java La herencia ocurre cuando una clase adopta y/o adapta las estructuras y métodos de una clase base (clase padre) e implementa los métodos de una o mas interfaces.
Herencia Simple de implementación
Una clase solo puede tener una clase padre
Herencia Múltiple de Interfaces
Una clase puede tener muchas interfaces padre
Slide 43 : Object es la clase mas general.
La clase Object definida en el paquete java.lang define e implementa el comportamiento que todas las clases requieren.
Las clases se derivan de Object o de otras clases lo que forma una jerarquía de clases. Herencia en Java
Herencia en Java : Herencia en Java Las clases de los niveles bajos de la jerarquía definen un comportamiento mas especializado.
Una subclase se deriva de otra clase.
La superclase es la clase que es el ancestro directo de otra clase.
Cada clase tiene solo una superclase inmediata.
Clase base y Clase derivada : Clase base. Es aquella que se usa para definir una nueva clase (usando la parte extends del encabezado de definición de clase).
Clase derivada. Es la clase que agrega y/o especializa elementos a una clase base.
La clase derivada hereda a todos los miembros definidos en la clase base y puede usar directamente todos aquellos que tiene acceso public o protected. Los constructores NO son miembros, por lo tanto no se heredan. Clase base y Clase derivada
Slide 46 : Ejemplo Clase base y Clase derivada
Slide 47 : Ejemplo Ejercicio:
Usando la sintaxis de Java
Definir las clases:
Persona
Alumno
Profesor
Secretaria
Otro Ejemplo de herencia con Java : Otro Ejemplo de herencia con Java Clase Box, BoxWeight, DemoSuper
Slide 49 : Clases abstractas Una clase abstracta es una definición parcial (incompleta) de un grupo de elementos.
Una clase abstracta contiene métodos abstractos (no están implementados).
Las clases abstractas se usan para definir jerarquías de clases (herencia) que contienen comportamiento y estructura.
La definición de clases abstractas forza la redefinición (sobreescritura) de métodos.
Slide 50 : Clases abstractas La palabra reservada abstract aparece en el encabezado de la definición de la clase cuando esta contiene cero o mas métodos abstractos.
Una clase abstracta se usa cuando:
Habrá varias subclases
Se desea manejar a todas las diferentes subclases como instancias de la superclase
La superclase por si misma no tiene sentido como un objeto.
Slide 51 : Ejemplo // con algunos identificadores cambiados
public abstract class Component {
…
public abstract void DrawMeOnScreen();
…
}
public class Button extends Component {
…
public void DrawMeOnScreen(){
// implementación
}
}
public class ScrollBar extends Component {
…
public void DrawMeOnScreen(){
// implementación
}
} Es posible crear instancias de las clases Button o ScrollBar pero NO de Component.
Slide 52 : Jerarquía de clases Observaciones:
¨ Existe un método ingresos que se aplica genéricamente a todos los empleados.
¨ El cálculo de los ingresos de cada empleado depende de su clase.
Slide 53 : public abstract class Employee
{
private String firstName;
private String lastName;
private String socialSecurityNumber;
// constructores
…
// métodos comunes a todos los trabajadores
…
// método abstracto sobreescrito por las subclases
public abstract double ingresos(); // no hay implementación aquí
} public class SalariedEmployee extends Employee
{
private double weeklySalary;
// calcula ingresos; sobreescribe el método abstracto ingresos en Employee
public double ingresos()
{
return getWeeklySalary();
}
} Ver Código
Ejemplo 2: : Ejemplo 2: Geometria Rectangulo Circulo Escribir Código
Interfases : Interfases Una interfase es un conjunto de declaraciones de constantes y métodos sin implementación (sin definir el cuerpo de los métodos).
Una interfase se usa para definir la estructura de un grupo de elementos.
Cuando una clase implementa una determinada interfase, se compromete a dar una definición (cuerpo) a todos los métodos de la interfase.
Las interfases permiten que múltiples clases compartan datos definidos en una localidad.
Slide 56 : Definición de una interfase. Una interfase se define en dos partes:
Encabezado
Bloque ModificadorAcceso interface Identificador Superinterfaces {
//constantes
//métodos
} extends ListaDeInterfaces
Slide 57 : Interfases Una interfase se usa para definir un protocolo de comportamiento que puede ser implementado por cualquier clase de la jerarquía cuando:
Se requiere un identificador común para un parámetro de un método.
Deseas compilar tu código sin tener una implementación del objeto particular.
Se requiere especificar la firma exacta de los métodos que deben proveerse por todas las clases que implementen la interfase.
Capturar similitudes entre clases no relacionadas
Slide 58 : Interfases y Clases Abstractas Las interfases y las clases abstractas se usan como mecanismos para definir jerarquías (de clases) mas finas.
Una clase puede heredar la estructura de muchas interfases.
Java cuenta con un conjunto de clases abstractas e interfases dentro de sus APIs
Slide 59 : Interfases Clases Abstractas No contiene métodos implementados
No forma parte de la jerarquía de clases
Puede implementar muchas interfases
Los métodos definidos en una interfase son implícitamente abstractos Puede contener métodos implementados
Es parte de la jerarquía de clases
Puede extender solo una superclase
Los métodos abstractos deben ser explícitamente definidos
Slide 60 : Implementación de la definición de una interfase. public interface StockWatcher {
void valueChanged(TickerSymbol tickerSymbol, BigDecimal newValue);
} public class StockApplet extends Applet implements StockWatcher {
public void valueChanged(TickerSymbol tickerSymbol, BigDecimal newValue) {
switch (tickerSymbol) {
case SUNW: ... break;
case ORCL: ... break;
case CSCO: ... break;
default: // handle unknown stocks ... break;
}
}
}
Variables en interfases : Variables en interfases Se pueden utilizar las interfaces para importar constantes compartidas por múltiples clases declarando, simplemente, una interfaz que contiene variables inicializadas con valores deseados.
Cuando una clase se implementa una interfaz que contiene constantes, todos las constantes declaradas en la interfaz formaran parte de las constantes de la clase. Ejemplo interface SharedConstants
Continuación de Ejemplo2 : Continuación de Ejemplo2 Escribir Código
Slide 63 : Panel y Frame Panel Frame Frame es una subclase de la clase Windows.
Los objetos de esta clase son usados como una ventana de alto nivel
en las interfaces de usuario. La clase Panel es un contenedor
en el cual se ubican
los componentes. Pueden agregarse componentes
a un objeto tipo Panel
mediante el método add
Unidad I. Tipos de datos definidos por el usuario : Unidad I. Tipos de datos definidos por el usuario Arreglos simples
Arreglos de Objetos
Arreglos : Arreglos Como podemos definir a un arreglo?
Un arreglo es una estructura que contiene una serie de elementos homogéneos (mismo tipo).
Un arreglo puede tener una o mas dimensiones.
Que características tiene un arreglo?
Los elementos de un arreglo se localizan por medio de índices (un índice por cada dimensión)
El primer elemento es 0 (cero), y el ultimo se accede tomando el total del numero de elementos -1
El tamaño del arreglo se define en su creación y NO puede cambiar durante la ejecución del programa.
Slide 66 : Arreglos de objetos VS Arreglos de datos primitivos Arreglo de datos String Arreglo de datos int
Arreglos : Declaración de arreglos unidimensionales.
tipo [ ] identificador
tipo identificador[ ]
Creación de arreglos unidimensionales.
new tipo[tamaño]
{ elemento0, elemento1, …, elementon}
Acceso de elementos
identificador[posición] Arreglos
Slide 68 : // crea un arreglo con 10 elementos de tipo int
números = new int[10]; // declara un arreglo de datos tipo int llamado números
int [] números; Ejemplos // declaración y creación
int [] números = new int[10];
Slide 69 : // Forma alternativa
int [] arregloInt = new int[6];
arregloInt[0] = 4;
arregloInt[1] = 2;
arregloInt[2] = 5;
arregloInt[3] = 7;
arregloInt[4] = 1;
arregloInt[5] = 8; Inicialización del arreglo
int [] arregloInt = {4,2,5,7,1,8}; // creación e inicalizacion
Slide 70 : 0 1 2 . . . 99 nombres . . . // crea un arreglo con 100 elementos de tipo String
nombres = new String[100]; // declara un arreglo de datos tipo String llamado nombres
Strign [] nombres; Ejemplos // declaración y creación
String [] nombres= new String[100];
Slide 71 : final int NUMEMPLEADOS = 30;
int [] horas = new int[NUMEMPLEADOS];
// almacena las horas trabajadas de cada empleado
for (int i=0; iFor para arreglos y colecciones : For para arreglos y colecciones for (tipo variable: estructura)
variable: es la variable en donde se almacenaran cada uno de los valores del arreglo.
estructura contiene el arreglo que se desea recorrer.
Ejemplo:
for (String a: miArreglo){
System.out.println(a)
}
Ejemplos : Ejemplos Se tiene declarado el siguiente arreglo:
String[] ciudades= {“Guadalajara”,”Mazatlan”,”Toluca”, “Hermosillo”};
Antes (versiones anteriores 1.5)
for (int i=0; iEjemplo : Ejemplo 0 1 2 3 Guadalajara Mazatlán Toluca Hermosillo Ciudad Ciudad Ciudad Ciudad
Ejercicios : Ejercicios Por medio de un arreglo, determina el nombre del día de la semana, tomando por teclado un numero del 0 al 6 (0 para domingo y 6 para sábado)
Escriba un fragmento de código que haga lo siguiente:
Declare un arreglo de nombre muestras de 40 elementos. El tipo de cada elemento es double.
Ponga un valor en cada elemento del array muestras de forma que coincida con su índice
Muestre por pantalla el valor de los cinco últimos elementos
Ejercicios : Ejercicios Suponga que se utilizan las siguientes definiciones:
arregloA es un arreglo de int de 10 elementos
arregloB y arregloC son arreglos de int de 20 elementos
arregloD es un arreglo de double de 20 elementos
Es valido hacer lo siguiente?:
arregloA[1]=arregloA[9];
Es valido hacer lo siguiente?:
arregloA[1]=arregloA[10];
Es valido hacer lo siguiente?:
arregloA[1]=arregloD[1];
Es valido hacer lo siguiente?:
arregloD[1]=arregloA[1];
Ejercicios : Ejercicios Declare un arreglo de enteros y rellenarlo con tantos números pares como permita su capacidad.
Escriba una clase en donde por medio de un factor de multiplicación se obtenga un arreglo con el resultado de la multiplicación del factor dado.
De un arreglo de cadena de caracteres se obtenga la cadena que tenga el mayor tamaño Hacer mas Ejercicios
Arreglos de Objetos : Arreglos de Objetos Así como es posible crear arreglos de tipos de datos primitivos, se pueden crear arreglos de clases. Ejemplo:
Alumno[] ArregloAlum = new Alumno[10];
Cada uno de los elementos del arreglo tendrá todos los atributos y métodos que se encuentren definidos en la clase Alumno.
Para agregar un nuevo elemento al arreglo seria así:
ArregloAlum[pos]= new Alumno(“002”,”JOSE HERNANDEZ”,20,”INFORMATICA”) Ver ejemplo de Productos Concluir ejemplo de Empleados: PagosEmpleados.java
Ejercicio : Ejercicio Ejemplo de Alumnos, crear altas, consultas, búsqueda de alumnos, imprimir todos los alumnos de una carrera o semestre, cambios a alumnos.
Clase cuenta (minibanco)