PROGRAMACIN ORIENTADA A OBJETOS
Clase 2
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
El modelo Orientado a Objetos
Para entender el modelo vamos a revisar 4 conceptos bsicos a lo largo del curso:
Objetos Clases Mtodos Atributos
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
QU ES UN OBJETO?
Un objeto es un conjunto de variables (o datos) y mtodos (o funciones) relacionados entre s. Modelan entidades del mundo real.
Es la representacin en un programa de un concepto, y contiene toda la informacin necesaria para abstraerlo:
Datos que describen sus atributos Operaciones que pueden realizarse sobre los atributos
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
QU ES UN OBJETO?
Representacin visual de un objeto
Los atributos del objeto (estado) y lo que el objeto puede hacer (comportamiento) estn expresados por las atributos y los mtodos que componen el objeto respectivamente. En programacin orientada a objetos, un objeto particular se denomina una instancia.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Ejemplo de qu es un objeto
Qu tendra un elemento que modele un carro?
Tendra variables que indicaran el estado actual del carro:
La velocidad es 80 km/h 2 Km recorridos Marcha actual es la 3
Estas variables corresponden a las de un carro en particular
Se conocen como variables de instancia o variables miembro
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Ejemplo de qu es un objeto
El objeto carro podra tener mtodos:
Acelerar Frenar Cambiar de velocidad
Estos mtodos afectan a una instancia u objeto carro en particular
Se denominan mtodos de instancia o mtodos miembro
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Modelamiento de un carro como objeto
frenar acelerar
velocidad recorrido marcha
Atributos:
Velocidad Recorrido Marcha Acelerar Frenar Cambiar velocidad
cambiar Velocidad
Mtodos:
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
El modelo Orientado a Objetos
Esta representacin del objeto muestra las variables miembro en el ncleo o centro del objeto y los mtodos rodeando el ncleo y protegindolo de otros objetos del programa.
Encapsulacin: Accin de empaquetar o proteger las variables miembro con los mtodos miembro se denomina. Java permite establecer 4 niveles de proteccin de las variables y de las funciones miembro. Los niveles de proteccin determinan a que variables o mtodos se pueden acceder y a travs de quien.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
QU ES UNA CLASE?
En el mundo real existen varios objetos de un mismo tipo, o de una misma clase.
Mi bicicleta es una de las tantas bicicletas que existen en el mundo. Acorde a la terminologa de la programacin orientada a objetos, mi bicicleta es una instancia de la clase de objetos conocida como bicicletas.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
QU ES UNA CLASE?
Todas las bicicletas tienen algunos atributos y mtodos en comn:
Atributos: color, marcha actual, cadencia actual, dos ruedas Mtodos: cambiar de marcha, frenar Una bicicleta podr ser azul, y otra roja, pero ambas en comn tienen una variable llamada color.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
QU ES UNA CLASE?
Podemos definir una plantilla de variables y mtodos para todas las bicicletas del ejemplo. Las plantillas para crear objetos son denominadas clases.
Una clase es una plantilla que define las variables y los mtodos que son comunes para todos los objetos de un cierto tipo.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Ejemplos de objetos de la clase carro
frenar
velocidad Recorrido marcha
acelerar
Velocidad: 100 Km/h Recorrido: 5000 Km Marcha: 5
cambiar Velocidad
Velocidad: 90 Km/h Recorrido: 10000 Km Marcha: 4
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Tipos de datos primitivos
Los atributos de una clase estn representados por variables. Las variables se declaran mediante un tipo de dato. Es la especificacin de un dominio (rango de valores) y de un conjunto vlido de operaciones a los que normalmente los traductores asocian un esquema de representacin interna propio.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Tipos de datos primitivos
El lenguaje Java define 8 tipos de datos primitivos:
Datos de tipos numricos Nmeros enteros: byte, short, int, long
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Tipos de datos primitivos
Datos de tipos numricos
Nmero con punto flotante: float, double
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Tipos de datos primitivos
Datos de tipo caracter
Char
Datos de tipo lgico
boolean
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Operadores aritmticos
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Caracteres especiales (secuencias de escape)
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Operadores Lgicos
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Variables
Java es un lenguaje "fuertemente tipado o tipificado. Es necesario especificar el tipo de dato para cada una de las variables. El nombre de la variable debe de ser un identificador vlido, y se usa para referirse a los datos que contiene una variable. El tipo de una variable determina los valores que puede almacenar y las operaciones que se pueden hacer sobre ella. Para dar a una variable un tipo y un nombre, se escribe una declaracin de una variable, que tiene la siguiente forma:
TipoDato nombreVariable; Ej. String nombre; // variable de tipo String int edad; // variable de tipo int Prof: Ing. Karla Abad Punto p; // variable del tipo Punto Facultad de Sistemas y Telecomunicaciones
JAVA Identificadores de variables
Pueden empezar con una letra, un signo de dlar ($) o un subguin. No pueden empezar con un nmero. Despus del primer caracter, pueden contener cualquier combinacin de letras, smbolos especiales y nmeros. En la prctica no hay lmite para el nmero de caracteres que puede contener un identificador. No puede utilizarse un keyword de Java como identificador. Son case sensitive. Es decir: mes y MES son dos identificadores diferentes;
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Identificadores de variables
int $c; int :b; Existen 4 identificadores int -d; correctos int _$; int e#; int ______2_w; int .f; int 7g; Int this_is_a_very_detailed_name_for_an_identifier;
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Keywords
Son palabras reservadas especiales que no pueden ser utilizadas como identificadores (nombres) para clases, mtodos o variables. En Java existen dos palabras que son reservadas pero que no son utlizadas: const y goto. El uso de null, true y false como identificadores est prohibido a pesar de no ser consideradas palabras reservadas sino valores literales.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Keywords
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Literales
Una literal es un valor constante formado por una secuencia de caracteres. Cualquier declaracin en Java que defina un valor constante -un valor que no pueda ser cambiado durante la ejecucin del programa- es una literal. Son ejemplos de literales los nmeros, los caracteres y las cadenas de caracteres.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Literales Integer
Hay 3 maneras de representarlos: decimal (base 10),octal (base 8) y hexadecimal (base 16).
Literal Decimal Comn y corriente, no necesita nada especial para representarlo en java. Literal Octal Va del 0 al 7. Se lo representa poniendo un cero en frente del numero: Eje: int siete = 07; int ocho = 010; int nueve = 011; Notar que solo pueden ser dgitos del 0 al 7, y se pueden poner hasta 21 dgitos sin contar el cero de en frente.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Literales Integer
Literal Hexadecimal Se lo representa poniendo el prefijo 0x (cero-x) o el sufijo L. Va del 0 a la f. Se acepta minsculas o maysculas. Se pueden poner hasta 16 dgitos sin incluir el prefijo 0x. Ej: int x=0x00001; int y=0x7ffff; int z=0xffffffff; [Link]("x: "+x+" y: "+y+" z: "+z); long a=0xfffffffffL; [Link]("a: "+a); Resp: x: 1 y: 524287 z: -1 Resp: a: 68719476735
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Literales Punto-Flotante
Son definidos como un nmero, un smbolo de decimal y ms numero representando la fraccin.
Eje: double d = 1234.1587; Los valores de punto flotante son definidos como double ( 64 bits ) por defecto, as que si se quiere asignar a un tipo float ( 32 bits ), se debe poner el sufijo F o f al numero. Eje: float f = 2134.124f; Si no se coloca la f o F, dar un error de compilacin. Tambin se puede poner el sufijo D o d a los doble, pero no es necesario.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Literales Boolean
Un boolean puede ser definida solo como true o false.
OJO: No se pueden asignar nmeros en vez de valores boolean. Ni ponerlos en lugares en donde un boolean es requerido. Eje: boolean b1 = true; boolean b2 = 1; int x=1; if ( x ) { }
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Literales Caracteres
Es representado por un caracter entre comillas simples. Tambin se lo puede escribir en el valor Unicode del carcter.
Eje: char a = 'a'; char N = '\u004E'; Recordar que un entero es solo un nmero sin signo de 16 bits. Lo que significa que puede ser un numero de 0 a 65535. char d = 0x64; char A = 65; char f = (char)70000;
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Literales Caracteres
Valores de Literales String Se los representa en la forma ms sencilla con comillas dobles. Eje: String string = hola;
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
JAVA Arrays
Son objetos que sirven para almacenar mltiples variables del mismo tipo o que sean todas subclases del mismo tipo. Pueden almacenar primitivos o referencias a objetos.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Declaraciones de Arrays
Declaracin de arrays de primitivos: int[] key; // Corchetes antes del nombre (recomendado) int key []; // Corchetes despus del nombre (legal pero menos leble) Declaracin de arrays de referencias a objetos: Empleado[] empleados; // Recomendada Empleados empleados [];
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Declaraciones de Arrays Multidimensionales
Pueden declararse arrays multidimensionales (arrays de arrays), de la siguiente forma: String[] [] [] occupantName; String[] ManagerName []; // Legal, pero muy feo y no entendible. Es recomendable seguir los consejos dados anteriormente en cuanto a la declaracin de los arreglos para que puedan ser ledos y entendido mas fcilmente.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Declaraciones de Arrays
Es ilegal incluir el tamao del array en su declaracin.
La razn es que la JVM, no reserva espacio hasta que realmente se instancie el array de objetos.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Arreglos
int[5] scores; Con respecto a lo declarado, recuerden que esto nunca compilar, ya que en java hace la reservacin de memoria solo en el momento de la instanciacin.
Construyendo un arreglo
En el momento de la creacin es donde se especifica el tamao del arreglo para poder alojarlo en el heap.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Construyendo un Arreglo cont
int[] carros; //Declara un arreglos de enteros Carros = new int[3]; //Construye un arreglo de enteros
Lo que sucede en las lneas declaradas es que se crea un arreglo de enteros, luego se lo crea en memoria y despus interiormente en compilador asigna ceros a todos los valores del arreglo. Tambin se lo puede hacer en una sola lnea: int[] carros = new int[3]; // Para primitivos
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Construyendo Arreglos Multimensionales
Un arreglo multidimensional es un simple arreglo de arreglos. As, un arreglo bidimensional de enteros es un objeto de tipo arreglo de enteros done cada uno de sus elementos es otro arreglo. Ejemplo : int [][] arreglo = new int[3][]; arreglo[0] = new int[3]; arreglo[0][0] = 0; arreglo[0][1] = 1; arreglo[0][2] = 2; arreglo[1] = new int[2]; arreglo[1][0] = 3; arreglo[1][1] = 4;
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Construyendo Arreglos Multimensionales
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Declarando, Construyendo e Inicializando en una lnea (Atajo 1)
int[] casas = {3,6,9};
Esta lnea: Declara una referencia de arreglo de enteros llamado casas. Crea un arreglo de longitud tres. Lo llena con los valores: 3,6 y 9. Asigna el arreglo creado a la referencia de arreglo llamada casas. Aqu salta una pregunta, porque no solo se usa esta manera para crear los arreglos y la respuesta es que puede que al momento de crear el arreglo no se sepa el tamao final. Para un arreglo de objetos se lo hace de la misma manera.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Declarando, Construyendo e Inicializando en una lnea
Para arreglos multidimensionales int[][] casas = { {1,2} , {3,4,5} , {6,7,8} }; Aqu se esta creando un arreglo de arreglos, cada uno de los elementos creados es un arreglo, en donde el tamao de estos en el nmero de elementos que tienen. Se ha creado 4 objetos aqui, el primer objeto creado es el arreglo de arreglos, luego el primer elemento dentro del arreglo tiene un tamao de 2, el segundo 3 y el tercero 4, y cada uno de estos son objetos.
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones
Inicializando arreglos
A two-dimensional array (an array of arrays) can be initialized as follows: int[][] scores = new int[3][]; // Declara y crea un arreglo que contiene 3 referencias a arreglos de enteros scores[0] = new int[4]; //El primer elemento en un arreglo de enteros de tamao 4 scores[1] = new int[6]; //El segundo en un arreglo de enteros de tamao 6 scores[2] = new int[1]; //El tercero es un arreglo de enteros de tamao 1
Inicializando arreglos en un lazo
Los arreglos tienen un nico atributo publico: length, que da el nmero de elementos del arreglo. Perro[] misPerros = new Perro[5]; for (int i=0; i<[Link] ;i++) misPerros[i] = new Perro();
Perro[] misPerros = new Perro[5]; for(Perro p : misPerros) p = new Perro();
Prof: Ing. Karla Abad Facultad de Sistemas y Telecomunicaciones