Slide 1

Slide 1 text

Unidad 2 | Programación Orientada a Objetos Java Liceo Militar de Honduras | Luis E. Fajardo

Slide 2

Slide 2 text

Clases y objetos Qué es una clase? Una clase es una construcción sintáctica que sirve para representar las características que debe tener un objeto creado con esa clase. Esta construcción sintáctica debe ser legible para quien lee o escribe el código y a la vez debe tener sentido lógico. Las clases son creadas durante la compilación de un programa. Liceo Militar de Honduras | Luis E. Fajardo

Slide 3

Slide 3 text

Clases y objetos Qué es un objeto? Un objeto es una construcción definida a partir de una clase. A los objetos también se les llama instancias de clase. Los objetos contienen los atributos de una clase y se pueden hacer operaciones sobre ellos. Un programa puede crear cualquier cantidad de objetos en memoria volátil siempre y cuando la capacidad de direccionamiento de la memoria lo permita. Los objetos son creados durante la ejecución del programa. Liceo Militar de Honduras | Luis E. Fajardo

Slide 4

Slide 4 text

Liceo Militar de Honduras | Luis E. Fajardo

Slide 5

Slide 5 text

Departamentos Liceo Militar de Honduras | Luis E. Fajardo

Slide 6

Slide 6 text

Clase: Departamento Atributo Tipo de dato Ejemplo id int 5 nombre String Cortes cabecera_depto String San Pedro Sula area_territ double 3923 km2 poblacion float 1876658 hab densidad_pob double 478.4 hab/km2 densidad_pob = poblacion / area_territ Liceo Militar de Honduras | Luis E. Fajardo

Slide 7

Slide 7 text

Objeto 1 id: 5 nombre: Copán cabecera_depto: Santa Rosa Copán area_territ: 3242 km2 poblacion: 429167 hab densidad_pob: 132.4 hab/km2 Liceo Militar de Honduras | Luis E. Fajardo

Slide 8

Slide 8 text

Objeto 2 id: 3 nombre: Colón cabecera_depto: Trujillo area_territ: 8249 km2 poblacion: 359000 hab densidad_pob: 43.5 hab/km2 Liceo Militar de Honduras | Luis E. Fajardo

Slide 9

Slide 9 text

Objeto 3 id: 7 nombre: El Paraíso cabecera_depto: Yuscarán area_territ: 7489 km2 poblacion: 515736 hab densidad_pob: 68.9 hab/km2 Liceo Militar de Honduras | Luis E. Fajardo

Slide 10

Slide 10 text

Objeto 4 id: 17 nombre: Valle cabecera_depto: Nacaome area_territ: 1665 km2 poblacion: 195747 hab densidad_pob: 117.6 hab/km2 Liceo Militar de Honduras | Luis E. Fajardo

Slide 11

Slide 11 text

En Java se declararían los objetos de la siguiente manera... Departamento objeto1 = new Departamento(5, "Copan", "Santa Rosa de Copan", 3242, 429167, 132.4); Departamento objeto2 = new Departamento(3, "Colon", "Trujillo", 8249, 359000, 43.5); Departamento objeto3 = new Departamento(7, "El Paraiso", "Yuscaran", 7489, 515736, 68.9); Departamento objeto4 = new Departamento(17, "Valle", "Nacaome", 1665, 195747, 117.6); Liceo Militar de Honduras | Luis E. Fajardo

Slide 12

Slide 12 text

Constructores Es un método que se ejecuta de manera automática al crear una instancia de una clase. Tiene como finalidad la inicialización de los atributos de la clase y en algunos casos ejecutar algunos métodos. Una clase puede tener tantos constructores como el desarrollador los necesite, a esto se le llama sobrecarga de constructores. La característica más destacada de los constructores es que tiene el mismo nombre de la clase. Liceo Militar de Honduras | Luis E. Fajardo

Slide 13

Slide 13 text

Constructores Las sobrecargas del constructor de una clase va a depender de las distintas combinaciones de parámetros de entrada al constructor. Cuando no se declara un constructor de manera explícita para una clase, entonces Java se encarga de asignar un constructor por defecto a la clase. A diferencia de las funciones, los constructores no pueden retornar valores. Liceo Militar de Honduras | Luis E. Fajardo

Slide 14

Slide 14 text

Constructores Los tipos de constructores más comunes en Java son: Constructor por defecto Constructor parámetrizado Liceo Militar de Honduras | Luis E. Fajardo

Slide 15

Slide 15 text

Liceo Militar de Honduras | Luis E. Fajardo

Slide 16

Slide 16 text

Construyendo una clase Estructura sintáctica class { } Clase Departamento public class Departamento { } Liceo Militar de Honduras | Luis E. Fajardo

Slide 17

Slide 17 text

Atributos Los atributos son características individuales que diferencian a un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos pueden guardarse como variables de tipo primitivo o compuesto. Los atributos determinan el comportamiento del objeto respecto a los demás objetos que pueda contener el programa. Liceo Militar de Honduras | Luis E. Fajardo

Slide 18

Slide 18 text

Añadiendo atributos al programa Estructura sintáctica public class { ; ; ; ... } Liceo Militar de Honduras | Luis E. Fajardo

Slide 19

Slide 19 text

Añadiendo atributos al programa Atributos Departamento public class Departamento { private int id; private String nombre; private String cabecera_depto; private double area_territ; private long poblacion; private double densidad_pob; } Liceo Militar de Honduras | Luis E. Fajardo

Slide 20

Slide 20 text

Definiendo un constructor Constructor por defecto Este tipo de constructor no lleva argumentos, la inicialización de las variables se hace con valores por defecto que el desarrollador define dentro del constructor. Estructura sintáctica public class { () { // aqui se inicializan los atributos con valores por defecto } ... } Liceo Militar de Honduras | Luis E. Fajardo

Slide 21

Slide 21 text

Definiendo un constructor Constructor por defecto Departamento public class Departamento { Departamento() { this.id = 0; this.nombre = ""; this.cabecera_depto = ""; this.area_territ = 0.0; this.poblacion = 0; this.densidad_pob = 0.0; } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 22

Slide 22 text

Definiendo un constructor Constructor parametrizado Este tipo de constructor tiene argumentos de entrada que luego se utilizan en la inicialización de los atributos de la clase. Estructura sintáctica public class { ; ; ( , , ...) { this. = ; this. = ; ... } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 23

Slide 23 text

Definiendo un constructor Constructor parametrizado Departamento public class Departamento { private int id; private String nombre; private String cabecera_depto; private double area_territ; private long poblacion; private double densidad_pob; Departamento(int id, String nombre, String cabecera_depto, double area_territ, long poblacion) { this.id = id; this.nombre = nombre; this.cabecera_depto = cabecera_depto; this.area_territ = area_territ; this.poblacion = poblacion; } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 24

Slide 24 text

Métodos de clase Los métodos de clase son funciones que sirven para manipular los atributos de la clase, de aquí parte la primera característica reelevante de la programación orientada a objetos: encapsulamiento. Liceo Militar de Honduras | Luis E. Fajardo

Slide 25

Slide 25 text

Métodos set y get Los métodos set y get usualmente se definen para acceder a un atributo privada de la clase. método set : se encarga de modificar directamente el valor de un atributo a través de un argumento. Generalmente es un método de tipo void y el argumento que recibe es del mismo tipo a modificar. método get : por lo general es un método que puede escribirse en una sola línea de código, retorna el valor actual de un atributo privado. El valor de retorno de este método es del mismo tipo del atributo al cual hace referencia. En la mayoría de los casos un método get no tiene argumentos. Liceo Militar de Honduras | Luis E. Fajardo

Slide 26

Slide 26 text

Métodos set y get En la mayoría de los casos, los métodos set y get tienen nivel de acceso public o protected . Liceo Militar de Honduras | Luis E. Fajardo

Slide 27

Slide 27 text

Método set public class Departamento { // atributos private int id; private String nombre; private String cabecera_depto; // constructores ... // metodos set public void setId(int id) { this.id = id; } public void setNombre(String nombre) { this.nombre = nombre; } public void setCabeceraDepto(String cabecera_depto) { this.cabecera_depto = cabecera_depto; } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 28

Slide 28 text

Método get public class Departamento { // atributos private int id; private String nombre; private String cabecera_depto; // constructores ... // metodos get public int getId() { return this.id; } public String getNombre() { return this.nombre; } public String getCabeceraDepto() { return this.cabecera_depto; } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 29

Slide 29 text

Imprimiendo los atributos de clase Para mostrar en pantalla los datos de cada uno de los objetos se necesita acceder a sus atributos a través de un método de la clase. Para esto se debe definir un método de clase. Liceo Militar de Honduras | Luis E. Fajardo

Slide 30

Slide 30 text

Imprimiendo los atributos de clase public class Departamento { // atributos private int id; private String nombre; private String cabecera_depto; // constructores ... // metodos set y get ... // metodo imprimir public void imprimir() { System.out.println("id: " + this.id + " nombre: " + this.nombre + " cabecera depto: " + this.cabecera_depto); } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 31

Slide 31 text

Instancia de objetos de una clase Las instancias de una clase pueden hacerse desde cualquier función externa que reciba un objeto de la clase. Generalmente en programas pequeños las instancias de clase se crean en la función main() . Liceo Militar de Honduras | Luis E. Fajardo

Slide 32

Slide 32 text

Instancia de objetos de una clase Utilizando objetos por separado public class Main { public static void main(String[] args) { Departamento depto1 = new Departamento(5, "Copan", "Santa Rosa Copan"); Departamento depto2 = new Departamento(3, "Colon", "Trujillo"); Departamento depto3 = new Departamento(7, "El Paraiso", "Yuscaran"); Departamento depto4 = new Departamento(17, "Valle", "Nacaome"); } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 33

Slide 33 text

Imprimir métodos de cada instancia de clase Utilizando objetos por separado public class Main { public static void main(String[] args) { Departamento depto1 = new Departamento(5, "Copan", "Santa Rosa Copan"); Departamento depto2 = new Departamento(3, "Colon", "Trujillo"); Departamento depto3 = new Departamento(7, "El Paraiso", "Yuscaran"); Departamento depto4 = new Departamento(17, "Valle", "Nacaome"); depto1.imprimir(); depto2.imprimir(); depto3.imprimir(); depto4.imprimir(); } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 34

Slide 34 text

Instancia de objetos de una clase Utilizando un arreglo de objetos public class Main { public static void main(String[] args) { // arreglo de objetos Departamento deptos[] = new Departamento[4]; Departamento deptos[0] = new Departamento(5, "Copan", "Santa Rosa Copan"); Departamento deptos[1] = new Departamento(3, "Colon", "Trujillo"); Departamento deptos[2] = new Departamento(7, "El Paraiso", "Yuscaran"); Departamento deptos[3] = new Departamento(17, "Valle", "Nacaome"); // invocar el metodo imprimir for (Departamento depto : deptos) { depto.imprimir(); } } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 35

Slide 35 text

Instancia de objetos de una clase Utilizando ArrayList import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList deptosList = new ArrayList<>(); deptosList.add(new Departamento(5, "Copan", "Santa Rosa Copan")); deptosList.add(new Departamento(3, "Colon", "Trujillo")); deptosList.add(new Departamento(7, "El Paraiso", "Yuscaran")); deptosList.add(new Departamento(17, "Valle", "Nacaome")); for (Departamento depto : deptosList) { depto.imprimir(); } } } Liceo Militar de Honduras | Luis E. Fajardo

Slide 36

Slide 36 text

Conceptos importantes Instancia de clase Las instancias son la materialización de una clase, es decir, son objetos concretos que tienen su propio estado (los valores de sus atributos) y su propio comportamiento (los métodos que pueden ejecutar). Las instancias permiten la creación de objetos concretos a partir de una clase y la manipulación de esos objetos a través de métodos. Liceo Militar de Honduras | Luis E. Fajardo

Slide 37

Slide 37 text

Conceptos importantes Memoria volátil Es también conocida como memoria de almacenamiento temporal y también conocida como RAM (Random Access Memory), es un tipo de memoria que almacena de manera temporal datos e instrucciones que están siendo utilizadas activamente por una computadora u otro dispositivo electrónico. De denomina "volátil" porque su contenido no se guarda cuando el dispositivo se apaga o se interrumpe el flujo eléctrico. Liceo Militar de Honduras | Luis E. Fajardo

Slide 38

Slide 38 text

Conceptos importantes Sobrecarga de constructores Es una técnica en la que una clase puede tener cualquier cantidad de constructores que se diferencian por la cantidad y tipo de parámetros. El compilador diferencia estos constructores tomando en cuenta el número de parámetros y el tipo de dato asociado a cada parámetro. Liceo Militar de Honduras | Luis E. Fajardo

Slide 39

Slide 39 text

Conceptos importantes Encapsulamiento Almacena y organiza las características y funcionalidades de los objetos representándolas por medio de atributos y métodos. El encapsulamiento, garantiza la integridad de los datos que contiene un objeto, lo que significa que los datos son correctos y están completos, además, restringe el acceso a los datos a través de modificadores de acceso. Liceo Militar de Honduras | Luis E. Fajardo