Java: un rápido repaso

Documentos relacionados
abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Java. Introducción a la Programación Orientada a Objetos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

o Los arreglos son colecciones ordenadas de datos del mismo tipo. o Ejemplos: 2

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Generalidades de Java. un lenguaje de Programación Orientado a Objetos (POO); y una plataforma de ejecución para programas escritos en lenguaje Java

Datos Elementales y formato de un programa en Java

3.3 Conceptos Básicos del Lenguaje Java

Introducción a la Programación en Java

Construcciones del Lenguaje Java

Introducción a Java. Introducción a Java. Programación I

Principios de Computadoras II

o Una clase es un tipo al cual pertenecen objetos o instancias de la clase.

Los parámetros: son los campos que se comunican a los métodos de los objetos.

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Estructura de datos y Programación

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Java posee dos grandes categorías de tipos para las variables:

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Elementos de un programa en C

Programación Orientada a Objetos

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Curso de Java Introducción a la Programación II

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Tema 2. El lenguaje JAVA

Java para programadores

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2. El lenguaje de programación Java (Parte 1)

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

JAVA 1. Introducción

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Universidad Autónoma de Tlaxcala. M.C. José Juan Hernández Mora. Primera Sesión

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

Examen Teórico Convocatoria de Junio de 2012

Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

4/14/2010. Objetivos. Que es JAVA. JAVA como plataforma. Reglas Sintácticas y de Codificación Básicas de JAVA

NETBEANS JAVA PROGRAMACIÓN ORIENTADA A OBJETOS

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

4. Operadores Operador asignación

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Java: control de excepciones

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

Ficha de Aprendizaje N 13

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

3.4 Clases y Objetos 05/04/2004. Conceptos Generales. Modificadores de la Clase. Estructura de una Clase. Variables Miembros

INDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases

Lección 2 Introducción al lenguaje C

Los tipos de datos primitivos

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

UNIDAD 2 Descripción de un programa

PRINCIPIOS DE PROGRAMACIÓN. Mtro. en Ingeniería de Software. Especialidad en e-commerce Ismael Jiménez Hernández

Oracle Certified Associate, Java SE 8 Programmer

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Programación Orientada a Objetos

Examen Teórico. Convocatoria de Febrero de 2015

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Elementos léxicos del lenguaje de programación Java

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

CAPITULO 2: VARIABLES Y CONSTANTES

Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

TEMA 2. Agenda. Fundamentos de JAVA

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

Programación Orientada a Objetos. Orientación a Objetos en Java

Transcripción:

Java: un rápido repaso Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl

Desarrollo y ejecución de aplicaciones en Java public class Hola { public satic void... i =1; System.out... Código fuente Compilador Java 1111000011110000 0000111100001111 Bytecode Intérptrete Java Intérprete Java Intérprete Java 111000 11100 00111 0001110 1110001000 00011101111011010 00001101000100001 10000100010010011 01110000010010000 111100001111000111 000011110001111100 000111100010010 Código objeto PC Mac Sun (particular para cada plataforma) 2

Una aplicación en Java v Se estructura como una clase (no privada) que tiene un método main. La aplicación puede hacer uso de otras clases. v Un archivo puede contener más de una clase. Sólo una de ellas puede ser no privada. v El nombre un archivo debe ser el mismo que el de la clase no privada que contiene. v Java distingue entre mayúsculas y minúsculas. /** Estructura de una aplicación */ public class IdentificadorClase { public static void main (String[ ] idarreglo ) {... // Fin método main // Fin clase 3

Compilación y ejecución de una aplicación v Para ejecutar una aplicación se debe indicar a la JVM el nombre de la clase que contiene el método main: C:\temp>java MiTarea v Para compilar una clase se debe indicar al compilador el nombre del archivo que contiene el código a compilar: C:\temp>javac MiTarea.java v Recordar nuevamente que Java es sensible a mayúsculas y minúsculas 4

Tipos de datos v Los tipos de datos utilizados por programas en Java se clasifican en: Primitivos: sirven para definir variables que guardan valores numéricos, lógicos y caracteres unitarios. Clases e interfaces: sirven para definir variables que almacenan tipos de datos estructurados, con las funciones asociadas. v Java requiere la declaración de variables antes de que sean utilizadas. El tipo de una variable declarada no puede ser modificado. Se dice que es un lenguaje fuertemente tipificado. 5

Tipos de datos primitivos v Entero byte entero 8 bit -128..127 short entero 16 bit -32.768..32.767 int entero 32 bit -2.147.483.648.. 2.147.483.647 long entero 64 bit -9.223.372.036.854.755.808.. 9.223.372.036.854.755.807 v Punto flotante float p flotante 32 bit 7 dígitos significativos (10-46, 10 38 ) double p flotante 64 bit 15 dígitos significativos (10-324,10 308 ) v Caracter char caracter Unicode v Lógico boolean lógico false, true 6

Operadores v Asignación = v Numéricos Binarios: + (suma), - (resta), * (producto), / (división) Unarios: ++ (auto incremento), -- (auto decremento) v Relacionales: == (igual),!= (distinto), < (menor), <= (menor o igual), > (mayor), >= (mayor o igual) v Lógicos: && (and), (or),! (not) Nota: Las expresiones matemáticas se evalúan con precedencia de * y / sobre + y -. 7

La clase String v La clase String permite manipular cadenas de caracteres, por ejemplo: Hola mundo, Mario Mora, 12/10/99, A,. v Para determinar la igualdad entre dos strings se debe usar el método equals. if( nombre.equals( nombreamigo ) ) while(!opcion.equals( salir ) ) if( Euro.equals( monedaingresada ) ) 8

Métodos útiles de la clase String v public char charat(int index): retorna el char correspondiente a la posición index (primera posición es 0). v public int indexof(char ch): retorna la primera posición que ocupa el carácter ch. v public int lastindexof(char ch): retorna la última posición que ocupa el carácter ch. v public boolean equalsignorecase(string str): retorna true si el String es igual al argumento, independientemente de su escritura en mayúsculas o minúsculas. v public String tolowercase(): retorna un String equivalente, pero con todas sus letras en minúsculas. v public String touppercase(): retorna un String equivalente, pero con todas sus letras en mayúsculas. v public int length(): retorna el el largo del String. 9

Estructuras de control: decisión Simple: if ( condición ) instrucción if ( condición ) instrucción 1 else instrucción 2 Compleja: if ( condición ) { instrucción 1-1 instrucción 1-2... else { instrucción 2-1 instrucción 2-2... 10

Estructuras de control: iteración Mientras - repetir: while ( condición ) instrucción while ( condición ) { instrucción 1 instrucción 2... Hacer - mientras: do instrucción while ( condición ) do { instrucción 1 instrucción 2... while ( condición ) 11

Estructuras de control: iteración Ciclo for: for ( [tipo] var=valor inicial ; condición de iteración ; incremento) instrucción for ( [tipo] var=valor inicial ; condición de iteración ; incremento){ instrucción Ejemplo: for( int i = 1; i < 10, i++ ) System.out.println( Hola ); 12

Declaración de variables v Una variable se declara según el formato: tipo identificador [=valor] [, identificador [ = valor ] ] Ejemplo: int a, b, c double peso = 7.05 char letra = T byte edad = 20, veces = 3 v Convención: el identificador de una variable de tipo primitivo se escribe en minúsculas. Ejemplo: edad, edadalumno, estadocivil, eselultimo 13

Clases y métodos útiles v Output (por pantalla): System.out.print() System.out.println() Ejemplo: System.out.println( Hello ); v Conversión de String a número: Byte.parseByte() Short.parseShort() Integer.parseInt() Float.parseFloat() Double.parseDouble() Ejemplo: int x; x = Integer.parseInt( 1050 ); 14

Ejemplo de una aplicación /** Programa ejemplo para cálculo del Factorial de un número específico. @author Franco Guidi Clase */ public class Factorial1 { public static void main( String arg[] ) { int número, i=1, fact=1; número = 3; while( i <= número ) { fact = fact * i; i++; System.out.println( "El factorial de " + número + " es " + fact ); // Fin método main // Fin clase Método main 15

Estructura de una aplicación v El método main puede recibir parámetros desde la línea de comandos del intérprete. Estos se almacenan en las posiciones del arreglo de String indicado en la declaración del método. /** Programa ejemplo para cálculo del Factorial de un número específico, acepta el número proporcionado por parámetro. @author Franco Guidi */ public class Factorial2 { public static void main( String arg[] ) { int número, i=1, fact=1; número = Integer.parseInt( arg[0] ); while( i <= número ) { fact = fact * i; i++; System.out.println( "El factorial de " + número + " es " + fact ); // Fin método main // Fin clase 16

Clases y métodos útiles (cont.) v Lectura de datos (consola) BufferedReader, InputStreamReader, System.in, IOException import java.io.* ; public class Factorial3 { public static void main( String arg[ ] ) throws IOException { int número, i=1, fact=1; BufferedReader lector = new BufferedReader( new InputStreamReader( System.in ) ); String ingresado; System.out.println( "Ingrese número para cálculo de factorial: " ); ingresado = lector.readline( ); número = Integer.parseInt( ingresado ); while( i <= número ) { fact = fact * i; i++; System.out.println( "El factorial de " + número + " es " + fact ); // Fin método main // Fin clase 17

Valores literales v Son valores que aparecen explícitamente en el código fuente. Por ejemplo: T : tipo char T, Pedro, 15 : tipo String 150 : tipo int 150.0 : tipo double 150.0f : tipo float 0150: tipo int octal 0x150: tipo int hexadecimal 18

Valores y variables: promoción automática de tipos v Una variable de un tipo de dato puede recibir un valor de otro tipo si: los dos tipos son compatibles, y el tipo de destino es de mayor capacidad que el tipo de origen Ejemplo: int datoentero = 100; double datodouble; datodouble = datoentero; Promoción 19

Valores y variables: casting v Permite convertir un valor de un tipo de mayor capacidad a otro de menor capacidad (funciona si y sólo si el tipo de menor capacidad puede contener al valor convertido). El casting tiene prioridad sobre los operadores +,-,* y /. Formato: var1 = (tipo de var1) var2 Ejemplo double j=1.0; int i; i = (int) j; Correcto Ejemplo int j=310; byte i; i = (byte) j; Incorrecto: no es posible almacenar el valor 310 en una variable byte 20

Valores y operaciones v La operación de dos números de un mismo tipo, genera un resultado también del mismo tipo. v Se exceptúan de la regla anterior las operaciones sobre datos tipo byte o short: la operación de dos datos de tipo byte o short, genera como resultado un int. v El resultado de cualquier expresión aritmética es del tipo correspondiente al del operando de mayor jerarquía, en el orden: double float long int 21

Valores y operaciones (cont.) v Suponer variable x definida como double: x = 10 / 4; // x toma valor 2.0 double x = 10.0 / 4; // x toma valor 2.5 double x = 10.0f / 4; // x toma valor 2.5 double x = (double) 10 / 4; // x toma valor 2.5 double x = (double) (10/4); // x toma valor 2.0 double v Suponer variable x definida como float: x = 10 / 4; // x toma valor 2.0 float x = 10.0 / 4; // Error: x no puede almacenar valor 2.5 double x = 10.0f / 4; // x toma valor 2.5 float x = (float) 10 / 4; // x toma valor 2.5 float x = (double) (10/4); // Error: x no puede almacenar valor 2.0 double 22

Valores y operaciones: precisión v Las operaciones aritméticas con tipos enteros (byte, short, int o long), se realizan con exactitud. v Las operaciones aritméticas con tipos de punto flotante (float o double), se realizan con exactitud limitada. v Por tanto para comparar igualdad de dos variables del tipo punto flotante se debe determinar si su diferencia en valor absoluto es menor de un cierto error aceptable. Ejemplo: si var1 y var2 son del tipo double: if( Math.abs( var1 - var2 )< 0.0000001 ) System.out.println( Son iguales ); else System.out.println( No son iguales ); 23

Arreglos en Java v Cada arreglo se reconoce por un identificador y cada dato se almacena en una posición indexada. v Un arreglo de largo N, tiene posiciones indexadas mediante enteros desde 0 hasta N-1. nombres Ana Juan Pedro Pía Mario Posición: 0 1 2 3 4 v El máximo largo posible para un arreglo corresponde al mayor valor permitido para un int. v La definición de variable, instanciación del arreglo y su asignación a la variable puede realizarse en una sola instrucción: tipo[ ] variable = new tipo[ entero ] v No es posible modificar el largo de un arreglo instanciado. 24

Arreglos en Java (cont.) v Ejemplo de instanciación: double[] nota = new double[4]; v Instanciación a partir de expresión literal: int[] nota ; nota = { 23, 14, 55, 18 ; v El largo de un arreglo se puede conocer por medio de la variable length: while( i < nota.length ) { System.out.println( nota[ i ] ); i++; 25

Arreglos de arreglos v Java permite implementar matrices bidimensionales de la siguiente forma: v Ejemplo tipo[ ] [ ] variable = new tipo[ entero1 ] [ entero2 ] double[ ][ ] utilidad; utilidad = new double[10][15]; v En realidad Java maneja arreglos de arreglos: los arreglos de un arreglo no requieren ser de la misma longitud int[ ][ ] nota; nota = { {-1,7,15, {3, 2, {4,-3,12, {3 ; 26

Clases en Java v Una clase en Java se compone (normalmente) de: Variable(s) Constructore(s) Método(s) v Convención: el nombre de una clase se escribe con la primera letra de cada palabra en mayúsculas: EsteEsUnEjemplo public class CajaAhorro { private int saldo; private int transacciones; public CajaAhorro() { saldo = 0; transacciones = 0; public void depositar( int monto ) { saldo = saldo + monto; transacciones++; public void girar( int monto ) { saldo = saldo - monto; transacciones++; public int obtenersaldo() { return saldo; public int obtenertransacciones() { return transacciones; 27

Clases y variables v Variables de instancia: Pertenecen a cada objeto o instancia de clase. v Variables de clase: Compartidas por todas las instancias de la clase. Se declaran como static. public class Factura { public int numero; public static int contfacturas;... Variable de instancia Variable de clase 28

Visibilidad de variables de clase o de instancia v Modificadores de visibilidad de una variable de clase o de instancia: public : visibilidad general. private: visibilidad limitada a la clase en que ha sido declarada. No se heredan. protected: visibilidad limitada a la clase en que ha sido declarada, y a sus subclases. default (omisión): visibilidad dentro del package. 29

Constructores de clases v En Java todas las clases tienen un constructor. Si no se lo especifica, Java asigna a la clase el constructor por omisión (sin parámetros, sin código). v Los constructores deben tener el mismo nombre que la clase a la que pertenecen. Se distinguen entre ellos por el número y tipo de sus parámetros (sobrecarga de constructores). public class Reloj { private int horas, minutos, segundos; public Reloj(int hh, int mm, int ss) { horas = hh; minutos = mm; segundos = ss;... 30

Clases y métodos v Métodos de instancia: Proveen operaciones que se invocan sobre objetos (instancias de clases)... por tanto tienen acceso a las variables de instancia del objeto. public class Cuenta {... public int getsaldo(){... Cuenta micuenta;... x = micuenta.getsaldo(); 31

Clases y métodos (cont.) v Métodos estáticos: No se ejecutan sobre un objeto...... por tanto no tienen acceso a las variables de instancia de objetos. Se declaran con el modificador static. Sirven para proveer funciones de tipo general. Ejemplo: método parseint de la clase Integer. Se invocan sobre la clase (o sobre una instancia): Notar que el main de una aplicación es un método estático. public class Cuenta {... public static int convierte (String Z){... x = Cuenta.convierte( 1001 ); 32

Visibilidad de los constructores y métodos de una clase v Modificadores de visibilidad de un método: public : visibilidad general. private: visibilidad limitada a la clase en que ha sido declarado (i.e. sólo otros métodos y constructores de la misma clase). protected: visibilidad limitada a la clase en que ha sido declarado, y a sus subclases. default (omisión): visibilidad dentro del package. 33

Parámetros en constructores y métodos v Formato para declarar parámetros: ( tipo1 var1, tipo2 var2,..., tipon varn) v Si un constructor o método tiene parámetros denominados igual que variables de instancia, los primeros ocultan a estas últimas. La palabra reservada this permite hacer una autorreferencia al objeto, y acceder a sus propiedades. public class Punto { private int x; private int y;... public void setcoordenadas(int x, int y){ this.x = x; this.y = y;... 34

Valores retornados por métodos v Los métodos pueden o no retornar un valor. v Modificadores de tipo de valor retornado: Una referencia a una clase: String, CuentaCorriente, Pez, etc. void: el método no retorna valor. Un tipo primitivo: short, byte, int, long, char, boolean. Una referencia a un arreglo: int[], String[][], Pez[], etc. v Un método puede retornar como máximo un único valor. v Para retornar valores se utiliza la instrucción return. Formato: return literal; o return variable; v El flujo de un método termina cuando se alcanza una instrucción return. v Todos los flujos de un método no void deben terminar en un return. Un método void puede terminar su ejecución en una instrucción return sin valor. 35

Variables locales en constructores y métodos v Variables locales: variables declaradas dentro del cuerpo del constructor o método. Se crean y utilizan en cada ejecución del constructor o método. No existen fuera de él. public class Tiempo { private int minutos; Parámetros... public int sumatiempo(int hora, int min) { int aux; aux= hora * 60 + min; minutos = minutos + aux;... Variable de instancia Variable local 36

Nombres de métodos v Convención: los nombres de métodos se escriben con la primera letra en minúsculas, y la primera letra de las siguientes palabras en mayúsculas. public class CajaAhorro { private int saldo; private int transacciones;... public void depositardinero( int monto ) { if( monto < 0) return; saldo = saldo + monto; transacciones++;... 37

Sobrecarga de métodos v Los métodos se diferencian por nombre del método, y cantidad, tipo y orden de sus parámetros. Todo esto constituye la firma del método (method signature). v El tipo de valor retornado no forma parte de la firma del método (no es utilizado para distinguir entre métodos). public double sumatiempo(){... public double sumatiempo(int a){... public double sumatiempo(double a){... public double sumatiempo(int a, double b){... public double sumatiempo(double a, int b){... 38

Instanciación de objetos v Para instanciar un objeto se debe usar el operador new: CuentaCorriente micuenta; micuenta = new CuentaCorriente(1000); v Una variable definida como referencia a objetos de una clase puede contener la dirección null. v Recordar que la sola instanciación de un arreglo que debe referenciar objetos de una cierta clase no instancia estos objetos. Los objetos referenciados deben instanciarse separadamente. 39

Eliminación de objetos v Cuando un objeto deja de ser referenciado, se vuelve inaccesible. v El recolector automático de basura de Java (automatic garbage collector) lo destruye, liberando la memoria utilizada. 40

Herencia v Java sólo soporta la herencia simple. v Toda clase en Java es subclase de otra clase. Las clases en que el programador no se especifica una superclase son automáticamente subclases de la clase Object. v Para declarar una subclase: public class NombreSubclase extends NombreSuperclase 41

Herencia (cont.) v Las variables y métodos privados no son heredados en las subclases. v Los constructores no son heredados en las subclases, pero se puede hacer referencia a ellos usando super: super( lista de parámetros ); v La instrucción super debe ser la primera dentro del constructor de la subclase. Si el programador no la indica, Java automáticamente agrega una referencia al constructor sin parámetros de la superclase: super(); 42

Operador instanceof v El operador instanceof permite reconocer la clase a la que pertenece un objeto referenciado desde una variable determinada. v Formato: NombreVar instanceof NombreClase v Ejemplo: if( pers instanceof Persona ) System.out.println( La variable pers referencia a una Persona ); else System.out.println( La variable pers no referencia a una Persona ); 43

Operador instanceof v Suponer: Profesor Persona Alumno Persona p1 =null: Profesor p2 = new Profesor(); Alumno p3 = new Alumno(); if( p1 instanceof Persona ) --> false if( p2 instanceof Profesor ) --> true if( p3 instanceof Alumno ) --> true if( p2 instanceof Alumno ) --> false if( p3 instanceof Persona ) --> true if( p2 instanceof Persona ) --> true 44

Prerrequisito para continuar v Revisar el siguiente vocabulario: Tipo de dato primitivo Clase Herencia, super-clases, sub-clases Instancia de clase, objeto Constructor Método, método de instancia, método de clase Variable de instancia, variable estática, variable local Implementar una clase, implementar un método Sobrecarga de métodos Sobre escritura de métodos 45