You are on page 1of 73

Programación

Mtro. Juan Pablo Ucán Pech
Unidad 2 1

Objetos y Clases

Mtro. Juan Pablo Ucán Pech
Unidad 2 2

Objetos y Clases

Contenido

• Objetivo • Abstracción y clasificación: identificando clases y objetos

Unidad 2

3

– Clases. objetos. métodos y variables de instancia – Declaración de una clase con un método e instanciamiento de un objeto de una clase – Declaración de método con un parámetro Unidad 2 4 .Objetos y Clases Contenido • Introducción a las clases y los objetos – Introducción.

métodos establecer y métodos obtener.Objetos y Clases Contenido • Introducción a las clases y los objetos – Variables de instancia. – Comparación entre tipos primitivos y tipos de referencia – Inicialización de objetos mediante constructores Unidad 2 5 .

Unidad 2 6 .Objetos y Clases Objetivos • Contar con los conocimientos fundamentales y suficientes sobre la creación de clases. lo anterior usando un adecuado IDE. para el modelado y abstracción de problemas reales.

un objeto es: – Una cosa tangible o visible.Objetos y Clases Abstracción y clasificación: identificando clases y objetos • Desde la perspectiva de cognición humana. – Algo hacia lo que se dirige un pensamiento o acción Unidad 2 7 . – Algo que puede comprenderse intelectualmente.

los términos instancia y objeto son intercambiables. la estructura y comportamiento de objetos similares están definidos en su clase común. comportamiento e identidad.Objetos y Clases Abstracción y clasificación: identificando clases y objetos • Definición de objeto: – Un objeto tiene estado. Unidad 2 8 .

Objetos y Clases Abstracción y clasificación: identificando clases y objetos • Definición de clase: – Una clase es un conjunto de objetos que comparten una estructura común y comportamiento común. Unidad 2 9 .

métodos y variables de instancia • Las clases proporcionan uno o más métodos • Los métodos representan tareas en un programa – Describe los mecanismos que actualmente realizan sus tareas – Oculta del usuario las tareas complejas que realizan – La llamada a un método.Objetos y Clases Clases. objetos. indica a un método del objeto que realice su tarea Unidad 2 10 .

objetos. métodos y variables de instancia • Las clases contienen uno o más atributos – Se especifica por variables de instancia Unidad 2 11 .Objetos y Clases Clases.

Objetos y Clases Clases. objetos. • Java es extensible: – Los programadores pueden crear clases Unidad 2 12 . métodos y variables de instancia • El lenguaje que utilizaremos para este curso es Java.

) – Luego el nombre del método entre paréntesis Unidad 2 13 .Objetos y Clases Clases. métodos y variables de instancia • Expresión para la creación de una instancia de clase: – Palabra clave new – Luego nombre de la clase entre paréntesis • Llamando a un método – Nombre del objeto y el punto separador (. objetos.

objetos y variables de instancia Usa creación expresión de instancia de clase expression para crear el objeto LibroCalificaciones Llama al método mostrarMensaje usando el objeto LibroCalificaciones Unidad 2 14 .Objetos y Clases Clases.

– Métodos de scanner • nextLine que lee la siguiente línea de entrada • next lee la siguiente palabra de entrada Unidad 2 15 .Objetos y Clases Declaración de una clase con un método e instanciamiento de un objeto de una clase • Declarando un método con un parámetro: – Parámetros de un método • Información adicional pasada a un método • Suministrando en el llamado del método con argumentos.

Objetos y Clases Declaración de una clase con un método e instanciamiento de un objeto de una clase Llama al método printf con el argumento nombreDelCurso Unidad 2 16 .

Objetos y Clases Declaración de una clase con un método e instanciamiento de un objeto de una clase Llama al método nextLine para leer una entrada Llama a mostrarMensaje con un argumento Unidad 2 17 .

y solo se pueden utilizar en ese método. 18 . – Se declaran dentro de la declaración de una clase. – Los atributos se representan como variables en la declaración de una clase. • Campos.Objetos y Clases Variables de instancia. métodos establecer y métodos obtener • Variables locales: – Variables que se declaran en el cuerpo de un método específico. pero fuera de los cuerpos de los de la Unidad 2 declaraciones de los métodos.

Unidad 2 19 . métodos establecer y métodos obtener • Ocultamiento de datos: – Es el proceso de declarar variables de instancia de acceso private.Objetos y Clases Variables de instancia.

Objetos y Clases Variables de instancia. métodos establecer y métodos obtener Variable de Instancia nombredelCurso Método establecer para nombreDelCurso Método obtener para nombreDelCurso Diapositiva 6 Unidad 2 Llamada al método obtener20 20 .

métodos establecer y métodos obtener • Modificadores de acceso public y private: – private • Usada para la mayoría de variables de instancia • Variables y métodos private son accesibles solo por los métodos de clase en la cual es declarada.Objetos y Clases Variables de instancia. • Declarar variables de instancia private es conocido como ocultar datos – Return type • Indica el elemento devuelto por el método • Es declarado en el encabezado del método Unidad 2 21 .

métodos establecer y métodos obtener • Métodos set y get – Variables de instancia private • No puede tener acceso directamente por los clientes del objeto • Usar métodos set para alterar el valor • Usar métodos get para obtener el valor Unidad 2 22 .Objetos y Clases Variables de instancia.

métodos establecer y métodos obtener Llama al método obtener nombreDelCurso Llama al método establecer para nombreDelCurso Unidad 2 Llama a mostrarmensaje 23 .Objetos y Clases Variables de instancia.

Objetos y Clases Inicialización de objetos mediante constructores • Inicializando objetos con constructores: – constructores • Inicializa un objeto de una clase • Java requiere un constructor para cada clase • Java provee por default constructores sinargumentos si este no es proporcionado • Es llamado cuando la palabra clave new es seguida por el nombre de la clase y los paréntesis Unidad 2 24 .

Objetos y Clases Inicialización de objetos mediante constructores Constructor para inicializar la variable nombreDelCurso Unidad 2 25 .

Objetos y Clases

Inicialización de objetos mediante constructores

Llama al constructor para crear el objeto libro de primer grado

Crea el objeto libro del segundo grado
Unidad 2 26

Objetos y Clases

Tarea

• 2. Definir una clase Revista que contenga los siguientes atributos:
– – – – a. Nombre b. ISBN c. Año d. Editorial

– Debe tener el siguiente comportamiento. – Imprimir() ---> devuelve una cadena con los valores de los atributos (llamado desde otra clase)
Unidad 2 27

Objetos y Clases

Contenido

• Declaración de métodos con múltiples parámetros. • Sobrecarga de métodos. • Control de acceso a los miembros. • Referencias a los miembros del objeto actual mediante this.

Diapositiva 7

28

Objetos y Clases Declaración de métodos con múltiples parámetros • Pueden ser declarados en una lista separado por comas – Argumentos pasados en un llamado de método debe ser consistente con el número. tipos y orden de los parámetros • Algunas veces llamados parámetros formales. Diapositiva 7 29 .

String y) – { if ( x == “F”) x = “1”. –} Diapositiva 7 30 . – if ( y == “M”) y = “1”.Objetos y Clases Declaración de métodos con múltiples parámetros • Ejemplo: – public String obtenerNombre(String x.

Objetos y Clases the maximum Declare method Declaración de métodos con múltiples parámetros Diapositiva 7 31 .

double z ) { double maximumValue = x. // determine whether y is greater than maximumValue if ( y > maximumValue ) maximumValue = y.Objetos y Clases Declaración de métodos con múltiples parámetros 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 return maximumValue. double y. // assume x is the largest to start Declare the maximum method Compare y and maximumValue Compare z and maximumValue Return the maximum value // determine whether z is greater than maximumValue 42 } // end class MaximumFinder Diapositiva 7 32 . // returns the maximum of its three double parameters public double maximum( double x. } // end method maximum if ( z > maximumValue ) maximumValue = z.

Diapositiva 7 33 .Objetos y Clases Sobrecarga de métodos • Métodos con el mismo nombre en la misma clase. siempre y cuando tengan distintos conjuntos de parámetros.

java // Overloaded method declarations. return intValue * intValue.13: MethodOverload.5 ) ).printf( "\nCalled square with int argument: %d\n".out.out.out.5 is %f\n". doubleValue ). square( 7. 6.printf( "Square of integer 7 is %d\n".printf( "\nCalled square with double argument: %f\n". } // end method testOverloadedMethods // square method with int argument Correctly calls public int square( int intValue ) { method System. System.out.printf( "Square of double 7. public class MethodOverload Correctly calls the { // test overloaded square methods method public void testOverloadedMethods() { System. } // end method square with double argument } // end class MethodOverload Declaring the “square of int” method Diapositiva 7 Declaring the “square 34 of double” method . } // end method square with int argument “square of int” the “square of double” // square method with double argument public double square( double doubleValue ) { System.Objetos y Clases Sobrecarga de métodos 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 // Fig. square( 7 ) ). return doubleValue * doubleValue. intValue ).

10 } // end main 11 } // end class MethodOverloadTest Called square with int argument: 7 Square of integer 7 is 49 Called square with double argument: 7.5 is 56. 9 methodOverload. 6.14: MethodOverloadTest.testOverloadedMethods().Objetos y Clases Sobrecarga de métodos 1 2 3 4 5 6 7 // Fig.java // Application to test class MethodOverload. public class MethodOverloadTest { public static void main( String args[] ) { 8 MethodOverload methodOverload = new MethodOverload().500000 Square of double 7.250000 Diapositiva 7 35 .

java:15: square(int) is already defined in MethodOverloadError public double square( int y ) ^ Compilation 1 error Diapositiva 7 error 36 . even if return types are different.Objetos y Clases Sobrecarga de métodos 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // Fig. 18 } 19 } // end class MethodOverloadError MethodOverloadError.java // Overloaded methods with identical signatures // cause compilation errors. 6.15: MethodOverloadError. public class MethodOverloadError { // declaration of method square with int argument public int square( int x ) { return x * x. } // second declaration of method square with int argument // causes compilation error even though return types are different public double square( int y ) { Same method signature 17 return y * y.

Objetos y Clases Control de acceso a los miembros • Los modificadores de acceso public y private controlan el acceso las variables y los métodos de una clase. Diapositiva 7 37 .

java // Time1 class declaration maintains the time in 24-hour format.59 private int second. // // set a new time value using universal time.59 // Fig. ensure that // the data remains consistent by setting invalid values to zero public void setTime( int h. // 0 .Objetos y Clases Control de acceso a los miembros 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 hour = ( ( h >= 0 && h < 24 ) ? h : 0 ). 8. int s ) public class Time1 { private int hour. // validate minute second = ( ( s >= 0 && s < 60 ) ? s : 0 ).1: Time1. // 0 – 23 private int minute. private instance variables Declare public method setTime validate hour minute = ( ( m >= 0 && m < 60 ) ? m : 0 ). int m. // 0 . // validate second } // end method setTime Validate parameter values before Diapositiva 7 setting instance variables 38 .

second.Objetos y Clases Control de acceso a los miembros 19 20 21 22 23 24 25 26 27 28 29 30 31 // convert to String in standard-time format (H:MM:SS public String toString() { return String. } // end method toUniversalString format AM or PM) strings 32 } // end class Time1 Diapositiva 7 39 . ( hour < 12 ? "AM" : "PM" ) ). } // end method toString // convert to String in universal-time format (HH:MM:SS) public String toUniversalString() { return String. second ). hour. minute. ( ( hour == 0 || hour == 12 ) ? 12 : hour % 12 ).format( "%02d:%02d:%02d".format( "%d:%02d:%02d %s". minute.

Objetos y Clases Referencias a los miembros del objeto actual mediante this • Cada objetos puede acceder a una referencia a sí mismo mediante la palabra clave this o referencia this. Diapositiva 7 40 .

Objetos y Clases Referencias a los miembros del objeto actual mediante this Diapositiva 7 41 .

Objetos y Clases Referencias a los miembros del objeto actual mediante this Diapositiva 7 42 .

Objetos y Clases Contenido • Constructores predeterminados y sin argumentos • Observaciones acerca de los métodos Establecer y Obtener • Composición • Enumeraciones Diapositiva 8 43 .

Objetos y Clases Constructores predeterminados y sin argumentos • Toda clase debe tener cuando menos un constructor. el compilador no creara un constructor predeterminado. Diapositiva 8 44 . • Si se declaran constructores. • El compilador crea un constructor predeterminado que no recibe argumentos cuando se le invoca.

• Los métodos obtener también se conocen comúnmente como métodos de acceso o métodos de consulta. • Los métodos establecer también se conocen comúnmente como métodos mutadores. Diapositiva 8 45 .Objetos y Clases Observaciones de lo métodos Establecer y Obtener • Los campos private de una clase pueden manipularse solamente mediante métodos de esa clase.

Objetos y Clases Observaciones de lo métodos Establecer y Obtener • Comparación entre los métodos Establecer y Obtener. y los datos public. • Uso de métodos Establecer y Obtener para crear una clase que sea más fácil de depurar. • Comprobación de validez en lo métodos Establecer. Diapositiva 8 46 .

alguna veces también se le conoce como “tiene un”. Diapositiva 8 47 .Objetos y Clases Composición • Se le conoce como composición cuando una clase puede tener referencias a objetos de otras clases como miembros.

Objetos y Clases Composición Diapositiva 8 48 .

Objetos y Clases Composición Validamos mes Validamos día Diapositiva 8 49 .

Objetos y Clases Composición Checamos si el día es 29 de febrero Diapositiva 8 50 .

Objetos y Clases Composición Empleado contiene referencias dos objetos fecha Llamada implicita los métodos toString de fechaContratacion y fechaNacimiento Diapositiva 8 51 .

Objetos y Clases Composición Creamos el objeto Empleado Desplegamos el objeto Empleado Diapositiva 8 52 .

• Los tipos enum y las clases – Todos los tipos enum son tipos por referencia – Un tipo enum se declara con una declaración enum.Objetos y Clases Enumeraciones • private enum Estado {CONTINUA. campos y métodos. Y consiste de una lista separada por comas de constantes enum. GANO. PERDIO}. – La lista puede incluir. constructores. Diapositiva 8 53 .

Objetos y Clases Enumeraciones Declaración de constantes enum Argumentos pasados al contructor enum Declaración de variables de instancia Declarar enum contructor de Diapositiva 8 Libro 54 .

Objetos y Clases Enumeraciones Diapositiva 8 55 .

– Cualquier intento por crear un objeto de un tipo enum con el operardor new produce un error de compilación. ya que declaran constantes que no deben modificarse. – Las constantes enum implicitamente static.Objetos y Clases Enumeraciones • La clase enum y sus restricciones: – Los tipos enum son implícitamente final. Diapositiva 8 56 .

Objetos y Clases Enumeraciones • Las constantes enum pueden usarse en cualquier parte en donde pueden usarse las constantes. Diapositiva 8 57 . y para controlar las instrucciones for mejoradas. como en las etiquetas case de las instrucciones switch.

Objetos y Clases Contenido • Recursividad • Documentación del código • Uso de un IDE Diapositiva 9 58 .

• Un método recursivo se llama a sí mismo Diapositiva 9 59 .Objetos y Clases Recursividad • Los programas que hemos visto hasta ahora están estructurados como métodos que llaman entre sí de una manera disciplinada y jerárquica.

Objetos y Clases Recursividad • Métodos recursivos – Se llaman a sí mismos – Útiles para algunos problemas que definen a un método para llamarse a sí mismo – Pueden ser llamados directamente o indirectamente a través de otros métodos Diapositiva 9 60 .

que a su ves puede hacer una llamada de vuelta al método recursivo. Diapositiva 9 61 .Objetos y Clases Recursividad • Recursividad indirecta – Método recursivo que llama a otro método.

Objetos y Clases Recursividad • Por ejemplo el factorial de n o n! – n · (n – 1) · (n – 2) · … · 1 – Puede ser resuelto recursivamente o de forma iterativa • La solución recursiva sería: – n! = n · (n – 1)!. Diapositiva 9 62 .

Objetos y Clases Recursividad Diapositiva 9 63 .

contador. contador++ ) System.Objetos y Clases Recursividad // CalculoFactorial. // casos base: 0! = 1 y 1! = 1 else // paso recursivo return numero * factorial( numero . contador <= 10. public class CalculoFactorial { // declaración recursiva del método factorial public long factorial( long numero ) { if ( numero <= 1 ) // evalúa el caso base return 1. factorial( contador ) ).printf( "%d! = %d\n".1 ).out. } // fin del método mostrarFactoriales } // fin de la clase CalculoFactorial Llamada original al método Diapositiva 9 recursivo 64 .java // Método factorial recursivo. } // fin del método factorial Como base devuelve 1 Pasos de la recursión en dos partes: el método sabe como hacerlo. y otro el no sabe Porción del métodohow to do // imprime factoriales para los valores del 0 al 10Llamado recursivo: Porción del public void mostrarFactoriales() método que no sabe como { hacerlo // calcula los factoriales del 0 al 10 for ( int contador = 0.

} // fin del método main } // fin de la clase PruebaFactorial Diapositiva 9 65 .java // Prueba del método recursivo factorial.mostrarFactoriales(). public class PruebaFactorial { // calcula los factoriales del 0 al 10 public static void main( String args[] ) { CalculoFactorial calculoFactorial = new CalculoFactorial().Objetos y Clases Recursividad // PruebaFactorial. calculoFactorial.

Iteración – Cualquier problema puede ser resuelto de forma recursiva o iterativa – Tanto la iteración y la recursión usan una sentencia de control • Sentencia de repetición (iteración) • Sentencia de selección (recursión) Diapositiva 9 66 .Objetos y Clases Recursividad • Recursividad vs.

Iteración – La iteración y la recursión implican repetición – La recursión puede ser cara en términos de tiempo de procesador y espacio de memoria. Diapositiva 9 67 .Objetos y Clases Recursividad • Recursividad vs.

sino que además los humanos entiendan qué están haciendo y por qué. Diapositiva 9 68 .Objetos y Clases Documentación del código • Documentar el código de un programa es añadir suficiente información como para explicar lo que hace. de forma que no sólo los ordenadores sepan qué hacer. punto por punto.

bien por otro programador que le sustituya Diapositiva 9 69 .Objetos y Clases Documentación del código • Por que documentar: – Todo programa que tenga éxito será modificado en el futuro. bien por el programador original.

exe nos pedirá que le demos la ruta por defecto donde queramos que eclipse nos vaya guardando los proyectos que creemos. marcamos la casilla para que no nos haga otra vez la pregunta: Diapositiva 9 70 .Objetos y Clases Uso de un IDE • Configuración de eclipse: – Una vez que hemos arrancado el programa Eclipse.

Objetos y Clases Uso de un IDE • Configuración de eclipse: – Después se iniciará el programa e iniciamos workbench. Diapositiva 9 71 .

Objetos y Clases Uso de un IDE Diapositiva 9 72 .

Data structure and algoritms in java (2nd edition). Object-Oriented Analysis and Design with Applications. Booch. Booch. Addison Wesley. 2002.Objetos y Clases Bibliografía 1. 6. Java como programar. Effective java programming language guide. Bloch. Deitel. Lafore. 2001. 5. Third Edition. Diseño orientado a objetos con aplicaciones. Robert. Prentice Hall. Grady. Joshua. Addison Wesley. Addison Wesley. 2007. 3. Grady. 4. Unidad 2 73 . Deitel & Deitel. 7th Edition. séptima edición 2008. 2007. SAMS edition. Deitel. 2. 1995. Java “how to program” Prentice Hall.