Programación Orientada a Objetos en Java

Documentos relacionados
INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

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

Programación Orientada a Objetos (POO)

Aplicaciones de Escritorio

Derechos de Acceso: COMPOSICION

PROGRAMACION ORIENTADA A OBJETOS EN C++

Curso de Java POO: Programación orientada a objetos

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Modulo 11. Clases y Objetos en Java

Por ejemplo, considerando la jerarquía de herencia de Figuras Geométricas de la siguiente figura, es posible hacer uso del concepto de polimorfismo.

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Desarrollador de Aplicaciones Web con Java

La sintaxis básica para definir una clase es la que a continuación se muestra:

Polimorfismo. Métodos virtuales

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

OBJETOS CONTENEDORES JPANEL Y JSCROLLPANEL

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

Herencia. Hay clases que comparten gran parte de sus características.

Curso Fundamentos de Informática Lección 7. Programación Orientada a Objetos

USO DEL OBJETO JTABLE

Conceptos más avanzados de Programación Orientada a Objetos

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

El lenguaje de programación Java

4.1 - OBJETOS Y CLASES

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

Introducción. Curso de Middleware. Práctica 6. 1 de 9

La Herencia: Teoría (1)

Conceptos de Programación Orientada a Objetos

Diseño Basado en Componentes. Curso 2008 / 09

package com.example.dialogov1;

ESCUELA DE INFORMÁTICA

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Relación entre clases. Ejemplo de Clase: Punto !

Pasos a seguir para crear una aplicación visual en el lenguaje de programación Java con Netbeans IDE.

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

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

El patrón Composite (Compuesto) Propósito Componer los objetos a una estructura de jerarquía de relación partetodo.

Programación orientada a objetos

2.2.- Paradigmas de la POO

Introducción a la Programación Orientada a Objetos

Python: Programación Orientada. JESSE PADILLA AGUDELO Ingeniero Electrónico

POO en Java IV: Herencia (Parte 1)

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

Java en 2 horas. Rodrigo Santamaría

Javadoc con NetBeans

Agenda..NET C# Laboratorio #1

Curso Introducción JAVA Pág.: 1

TEMA I PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN N ORIENTADA A OBJETOS OBJETOS (I) OBJETOS (II)

Documentación: Gestor de una Biblioteca (Eclipse, MySQL, JDK 1.6+) Jose Alberto Benítez Andrades

Introducción a la Programación Orientada a Objetos

PROYECTO FIGURAS DIAGRAMA DE FLUJO

Clases, Objetos y Métodos en Java

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Programación Orientada a Objetos en Java

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

1. Aplicaciones del J2SE SDK1.4.2 de Sun.

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET 2010

Forma Básica Clase Java

CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo

Prácticas de Programación

Programación Orientada a Objetos con Java

Ejemplo de GUI con Swing

Introducción a Swing. Taller de Programación 2016

Serialización de datos en C# en Binario, Soap y Xml

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Curso de Java POO: Programación orientada a objetos

Patrón Fábrica Abstracta. Julio Ariel Hurtado Alegría Ingeniería de Software II 2015

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

Tema: Clases y Objetos en C#. Parte II.

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

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Metodologías en la Ingeniería del Software Métodos Orientados a Objetos

Java Inicial (20 horas)

Fundamentos Programación Orientada a Objetos ( POO ) - Parte I Desarrollo de Software

COMO REALIZAR CONSULTAS CON EL CONSTRUCTOR DE GEOCONSULTAS DEL SIG GUADUA.

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

Programación de Eventos

LABORATORIO Nº 6 SUMA DE DOS NUMEROS EN POWER BUILDER

Clases en C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Algoritmos y Programación II. Enero de 2005

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

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Sistema de Archivos en Java

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Refactoring con Netbeans

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

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

Tema: Clases y Objetos en C++.

Conceptos Básicos de la Programación Orientada a Objetos con Java

Transcripción:

Programación Orientada a Objetos en Java En nuestro post de hoy vamos a tratar el tema la programación orientada a objetos en Java, no todo va a ser.net! En si la POO es bastante amplia y muy necesario para el desarrollo de software pero ahora nos concentraremos en hacer un ejemplo básico con el cual se pueda entender la forma en que funciona esto. Lo que incluye la POO es la Herencia, Polimorfismo, Encapsulamiento, etc. claro que los 3 mencionados es la parte clave de esto, aunque también podríamos hablar de cohesión, abstracción, ocultamiento y otros. Primero veremos un poco de teoría para entenderlo de mejor forma. Abstracción: Abstracción en la POO se refiere a poder identificar el posible comportamiento de un objeto para posteriormente convertirlo en sus métodos y funciones dentro de una clase. Encapsulamiento: Consiste en reunir todos los elementos de un posible objeto el cual se verán como atributos del mismo para luego realizar el tratado de sus datos de mejor forma. Imaginen la clase Persona y un objeto de esta, por ejemplo Carlos el encapsulamiento respectivo a este debería ser sus atributos como nombre, apellidopaterno, apellidomaterno, Edad, etc. Modularidad: Es la separación de un software por módulos, en si es una característica muy importante de la POO. Esta es una forma de realizar software con módulos independientes pero escalables y que se puedan extender y realizar el mantenimiento previo de una forma muy sencilla. Ocultación: Esto consiste en separar el acceso directo a un objeto, entonces diríamos que se puede acceder a tales objetos sólo mediante una capa especificada por este mismo. Polimorfismo: Es la acción de poder usar un múltiples posibilidades en una misma propiedad. También podríamos decir que a nivel de programación sería usar un método, función, entre otros llamados de la misma forma pero con diferentes propósitos. Herencia:

En la POO las clases no se encuentran aisladas, si no que pueden interactuar con otras clases así compartiendo sus atributos y métodos que puedan existir entre estas. Un ejemplo sería una clase Persona la cual es heredada a la clase PersonaNatural y PersonaJurídica. Persona tendría los datos comunes entre ambos. Ejemplo Para este ejemplo sólo veremos un poco de Encapsulamiento, Polimorfismo y Herencia, también se podrá ver algo de ocultamiento con la capa de negocio implementada. Creamos el proyecto con sus respectivas clases y formularios. Ahora diseñamos los formularios frmpersona, frmpersonanatural y frmpersonajuridica respectivamente las cuales se verán de la siguiente forma.

El primer formulario frmpersona es el que se heredará a los otros dos formularios por lo que tiene los datos en común de ambos. Recordar que cuando se crea una clase superior que se quiere heredar a otras, se debe cambiar a todos sus métodos y componentes que se quiere acceder desde la clase que lo hereda a protected para que esta pueda manipular sus componentes y métodos o public para que puedan ser accedidos desde cualquier clase. Por lo tanto tenemos que cambiar los dos componentes JTextField y el JTable de private a protected en el menu de propiedades->code->variable Modifiers ya que sólo queremos que estos componentes puedan ser accedidos sólo desde su clase que lo hereda. Ahora veamos que para heredar por ejemplo en el formulario frmpersonanatural elformulario frmpersona sólo se agrega en la creación de la clase extends frmpersona donde frmpersona es el nombre de la clase de donde heredamos. En este caso extends ya existe heredando de Swing el cual borramos y cambiamos por nuestroformulario. La línea donde se crea la clase debería quedar de la siguiente forma. public class frmpersonanatural extends frmpersona

... Para el otro formularios sería de la misma forma. Realizado esto, al compilar nuestro formulario frmpersonanatural debería verse de la siguiente forma. El formulario frmpersonajuridica se verá de la misma forma con la diferencia de que DNI será RUC. Código de la clase de encapsulado TPersona package Encapsulamiento; /** * * @author kaaf */ public abstract class TPersona protected String nombrecompleto; protected int edad; public void NombreCompleto(String nombrecompleto) this.nombrecompleto=nombrecompleto; public String NombreCompleto() return this.nombrecompleto;

public void Edad(int edad) this.edad=edad; public int Edad() return this.edad; Este es nuestro encapsulado que se hereda a los otros dos. Como se puede ver la clase conlleva un método abstract el cual hace que la clase sólo pueda heredarse a otras clases mas no pueda invocarse (No se puede invocar en clases que no lo heredan). También vemos atributos de tipo protected, esto hace que dichas variables puedan ser accedidos solamente desde la clase que lo hereda. Código de la clase de encapsulamiento TPersonaNatural. package Encapsulamiento; /** * * @author kaaf */ public class TPersonaNatural extends TPersona private String dni; public TPersonaNatural() public TPersonaNatural(String nombrecompleto, int edad, String dni) this.nombrecompleto=nombrecompleto; this.edad=edad; this.dni=dni; public void DNI(String dni) this.dni=dni; public String DNI() return this.dni;

Aquí vemos que es algo más cotidiano, con la diferencia de que heredamos de TPersona y así podemos acceder a sus atributos nombrecompleto y edad ya que estos son protected y están siendo accedidos mediante la herencia. Código de la clase de encapsulamiento TPersonaJuridica. package Encapsulamiento; /** * * @author kaaf */ public class TPersonaJuridica extends TPersona private String ruc; public TPersonaJuridica() public TPersonaJuridica(String nombrecompleto, int edad, String ruc) this.nombrecompleto=nombrecompleto; this.edad=edad; this.ruc=ruc; public void RUC(String ruc) this.ruc=ruc; public String RUC() return this.ruc; Se hace lo mismo que en TPersonaNatural. Como podemos ver en ambos casos tenemos constructores que cumplen diferentes funciones. El primer constructor de ambos casos sólo sirve para instanciar a la clase de encapsulado y el segundo constructor instancia con el paso de atributos para su almacén dentro del encapsulado. A este acto se le puede considerar polimorfismo. Código de la clase NegocioPrincipal package Negocio; import Encapsulamiento.TPersonaJuridica; import Encapsulamiento.TPersonaNatural; /** *

* @author kaaf */ public class NegocioPrincipal public static TPersonaNatural CargarEncapsuladoPN(String nombrecompleto, int edad, String dni) return new TPersonaNatural(nombreCompleto, edad, dni); public static TPersonaJuridica CargarEncapsuladoPJ(String nombrecompleto, int edad, String ruc) TPersonaJuridica tpersonajuridica=new TPersonaJuridica(); tpersonajuridica.nombrecompleto(nombrecompleto); tpersonajuridica.edad(edad); tpersonajuridica.ruc(ruc); return tpersonajuridica; Como podemos ver tenemos dos métodos de tipo public lo que permite acceder desde cualquier lado y static que libera memoria después de usar dicho método. En el primer método vemos el funcionamiento de uno de los constructores de la clase y en el segundo se muestra el otro constructor de sólo instanciación. Código del botón Registrar de TPersonaNatural private void btnregistraractionperformed(java.awt.event.actionevent evt) TPersonaNatural tpersonanatural=negocioprincipal.cargarencapsuladopn(txtnombrecompleto.get Text(), Integer.parseInt(txtEdad.getText()), txtdni.gettext()); Object[] filanueva= tpersonanatural.nombrecompleto(), tpersonanatural.edad(), tpersonanatural.dni() ; DefaultTableModel modelotabla=(defaulttablemodel)tablapersona.getmodel(); modelotabla.addrow(filanueva); TablaPersona.setModel(modeloTabla);

Código del botón Registrar de TPersonaJuridica private void btnregistraractionperformed(java.awt.event.actionevent evt) TPersonaJuridica tpersonajuridica=negocioprincipal.cargarencapsuladopj(txtnombrecompleto.ge ttext(), Integer.parseInt(txtEdad.getText()), txtruc.gettext()); Object[] filanueva= tpersonajuridica.nombrecompleto(), tpersonajuridica.edad(), tpersonajuridica.ruc() ; DefaultTableModel modelotabla=(defaulttablemodel)tablapersona.getmodel(); modelotabla.addrow(filanueva); TablaPersona.setModel(modeloTabla); Realizado todos estos pasos, nuestra aplicación debería correr de la siguiente forma.

Ojo: No olviden cambiar los componentes y métodos de las clases superiores de private a protected o public según lo requiera, caso contrario al heredar no se podrá tener acceso a los componentes de la clase superior. Pudimos ver que la POO no es nada complejo sólo que es un poco trabajoso y aún más si lo implementamos junto a la Programación en Capas, pero tener en cuenta que si se usan estas tecnologías el desarrollo podrá ser más trabajoso pero el mantenimiento y la extensión del software es mucho más sencillo y escalable. www.asociacionaepi.es