Está en la página 1de 32
‘2020 Paradigma de la programacién arentada a objetos iramacién Conceptos Filosofia y Ejemplos Aplicaciones Pres ntadaa Clave Principios interactivos (applications. html) yref tos (concepts. htm!) (philosophy. htm!) (examples.htm) (slid axhtml) Programacion Orientada a Objetos Conceptos clave ° Abstraccion o Clase Abstracta o Clase o Interfaz © Atributo o Métodos de acceso o Método ° Modificadores de acceso © Objeto o Modularidad ° Instancia o Encapsulamiento o Diagramas de o Herencia clases ° Polimorfismo ° Mensaje o Atributos estaticos © Constructor o Métodos estaticos Clases estaticas © Hilos © Destructor ° o Evento © Sobreescritura htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 92 ‘2020 Paradigma de a programacién arentada a objtos iramacisAbsteacgian Filosofia y Ejemplos Aplicaciones Pres atadaa Clave Principios interactivos (applications.html) yrefi seem La abstraction esi proeeso dettersretacion y disefio qué’ . implica reconocer y enfocarse en las caracteristicas importantes de una situacion u objeto, y filtrar o ignorar todas las particularidades no esenciales. o Dejar a un lado los detalles de un objeto y definir las caracteristicas especificas de éste, aquellas que lo distingan de los demas tipos de objetos. o Hay que centrarse en lo que es y lo que hace un objeto, antes de decidir cémo deberia ser implementado. o Se hace énfasis en el qué hace mas que en el cémo lo hace 1ccon se centra en les caractersticas esencises oe aigin cojeto, en reladon & Ejemplo: Imaginemos que queremos aplicar la abstraccién a las aves: Objeto: Pajaro Caracteristicas: © Pico htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 2182 ‘2020 Paradigma de a programacién arentada a objtos iramacién © A@@eptos Filosofia y Ejemplos Aplicaciones Pres ntadaa Clave Principios interactivos (applications.html) ref tos © Rahagisntmy ——(philosophy.htm!) ——_(examples.htm)) (slid =m) 5 Plumas Funcionalidades: © Volar o Picar o Aterrizar Clase La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede mencionar que una clase es una plantilla genérica| para un conjunto de objetos de_ similares caracteristicas. Una clase define el estado y el comportamiento que todos los objetos creados a partir de esa clase tendran. Ejemplo: University_Student ESTADO Ejemplo desarrollado en Java: htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl arse ‘2020 Paradigma de a programacién arentada a objtos Pa =eFifS8aREY 84°" ( Eiemplos Aplicacionps ntadaa Clave string Pelncipios interactivos (applicatiohs.html) tos (conceptd.htmBering (philasophy.htm!) (examples.htm!) axhtml) String universicy: String career: ramacién Concept public UniversityStadent (int ad, String name, der = genders void insertheSubjects |) ( void cancelsubjects() { void consaltRatings() { Ejemplo desarrollado en C++: name, string _gencer, Fy ime _sunsubjects)( void canceisubjects() ( sRatings() ¢ htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl Pres y ref (slid arse ‘2020 Paradigma de a programacién arentada a objtos ramacién Conceptos Filosofia y Ejemplos Aplicaciones Pres atada a Clave Principios interactivos (applications.html) yrefi seem Ejerniptedesatroll deer eryPython: xemrles.htm) (ide class UniversityStudent: £, id, nane, gender, university, ceresr,nunsubjects) ungubjects = numsubjecte der inscribesubjects (5212) pass def concelSubjeccs pase def consulthatings pass Atributo Es una caracteristica de un objeto, que ayuda a definir su estructura y permite diferenciarlo de otros objetos. Se define con un identificador y un tipo, el cual indica los valores que puede almacenar. El conjunto de valores de los campos definen el estado del objeto. Métodos Los métodos son los comportamientos 0 conductas de un objeto y permite identificar la forma en que actUa respecto a su entorno o respecto a otros objetos. Ademas, representa una operacién o funcién que un objeto realiza. El conjunto de los métodos de un objeto determinan el comportamiento general del objeto. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 582 ‘2020 Paradigma de a programacién arentada a objtos ramacién Conceptos Filosofia Ejemplos Aplicaciones Pres atada a Clave bns.html) yrefe tos (concepts, (slide 2x.html) Objeto Los objetos de software, al igual que los objetos del mundo real, también tienen caracteristicas y comportamientos. Un objeto de software mantiene sus caracteristicas en uno o mas atributos e implementa su comportamiento con métodos. o Es una entidad real o abstracta, con un papel definido en el dominio del problema. o Un objeto es una instancia de una clase, que tiene: identidad, estado(atributos) y comportamiento(metodos). Para el ejemplo anterior de la Clase UniversityStudent (Estudiante universitario), la creacion de objetos se haria de la siguiente forma: Ejemplo en C+ ‘Se crea un objeto de forma convencional AtyScudenc student (123, "Peper Se creaun objeto usando memoria dinimiea yStudent ‘student = new Universe: "pepe", Medicina”, htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl a2 ‘2020 Parasigma de a programacién arentada a objetos iramacién Conceptos Filosofia y Ejemplos Aplicaciones Pres atada a Clave Principios interactivos (applications.html) yrefi tos (concepts.html) (philosophy.htm!) (examples.html) (slide ax.htm)) + Instancia Es la particularizacion, realizacién especifica u ocurrencia de una determinada clase, entidad o prototipo. Una instancia de una clase es un objeto. Ejemplo: rae public int getedad(){ Cee } Peseta CaCl eters ye Si se tiene la anterior clase Animal, se podria crear una instancia de esa clase como un objeto. En este caso, una instancia de la clase Animal es la creacion de un nuevo objeto (perro) de nombre "Zeus" y raza "labrador". htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 132 ‘2020 Paradigma de a programacién arentada a objtos ramaciés AMBIERSE Puede-definir una instapeja de unaglasesentro des nedaa Otra olase como ebsiguiente ejemplotvos (opplications him) ye tos (concepts.html) (philosophy.htm!) (examples.html) (slide ox.html) Seem reese Como se puede observar, la clase Estudiante tiene una instancia de la clase Nota como atributo (evaluacién). Diagramas de clases Cuando se esta planteando el disefio y el modelo de los objetos mediante la abstraccion, existe una forma de plasmar esos prototipos a través de un diagrama de clases. Formalmente, se describe como un tipo de diagrama de estructura estatica que representa la estructura de un sistema mostrando las clases, sus atributos, operaciones (o métodos), y las relaciones entre los objetos. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl ase ‘2020 Parasigma de la programacién arentada a objtos vramacin _Collceptos Filosofia y! — pergogfipmplo Aplicaciones Pres atada a cle Principios interaeti (applications.htrfl) yeh tos (cd (Philosophy HERP" (example (slid oxhtm) {| + mostrar() £ Empleado Cliente ssiekdo brute ~ nombre_empresa emedrar() | = telefono de contacto + calcular_salario_neto() —_—_— +mostrar() f ‘jee ——aentes — Directivo —¢ Empresa ~ categoria - nombre + mostrar () En los diagramas de clase, se tienen notaciones que son comunes dentro del lenguaje de modelado unificado (UML). Por ejemplo, la herencia (herencia) se dibuja mediante un triangulo donde su eje superior apunta a la clase padre. La visibilidad de los atributos que tiene la clases se denota con un + (publico), - (protegido), # (protegido). La relacién que tiene un objeto con otro se representa dependiendo de su categoria, una relacion de asociacién es una linea sencilla que une las dos clases vinculadas, una relacién de agregacion (existe una instancia de un objeto en una clase) se describe mediante un rombo vacio y una relacién de composicién(la existencia de una clase depende absolutamente de otra) se representa con un rombo relleno. Para este ejemplo concretamente, la clase Empleado y la clase Cliente heredan de la clase Persona. Todos los atributos de las clases son privados, como se detalla en la clase Persona con el signo negativo antes de nombre y edad. Ademas, existe una relacién de composicién entre la clase Empleado y la clase Empresa, es decir, si un objeto Empresa deja de existir, la clase Empleado también va a dejar de existir. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 982 ‘2020 Paradigma de a programacién arentada a objtos iramacién Conceptos Filosofia y Ejemplos Aplicaciones Pres atada a Clave Principios interactivos (applications.html) yrefi tos (concepts.html) (philosophy.htm!) (examples.html) (slide ax.htm)) . Mensaje Un mensaje es una comunicacion dirigida desde un objeto A ordenando a otro objeto B que ejecute uno de sus métodos con ciertos parametros asociados al evento que lo generé. Los mensaje son los que permiten la comunicacion entre objetos. Ejemplo: Control Rempto 1: enviar_digito(2) 2: enviar_digito(3) 4: resultado: Constructor Cuando se crea un objeto es necesario inicializar sus variables con valores coherentes. Esto se hace por medio de un constructor que tiene las siguientes caracteristicas: Se llama igual que la clase. Retorna una instancia de una clase Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones. De entre los que existan, tan solo uno se ejecutara al crear un objeto de la clase. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl r0182 ‘2020 iramacién ntadaa tos axhtml) Paracigma de la programacién arentada a objetos Confeptos> Filosofia y Ejemplos eesPrineipiosepresents and nintetactivos,y coords: 2+ _sfpbilggophyshtmi)_.y, (examples.htm!) Greate 2 new point at x; y selfix =e selfly = y Aplifaciones ~(apifications. html) 1G 2 Other etatenents outside the clase continue below here ClasseEieaplo Sub Cl Constructor en Python y Constructor en PHP Destructor Es un método de una clase cuyo fin es eliminar un objeto de una clase. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 2 Pres y ref (slid ‘2020 Parasigma de la programacién arentada a objetos iramacién Conceptos Fitospray” Ejemplos Aplicaciones Pres rtada a Clave Prinoipios sat ssnezs esssinteractivos (applications.htmi) refs tos (concepts.htm!) J (phitésep (examples hyp) (slide axchtm)) Estudiante(} { _estudiantest+; Constructor en C+ y su respectivo destructor en C++ Evento Los eventos son todas las acciones que el usuario inicia al dar clic sobre un botén, presionar una tecla, etc. Cada vez que se produce un evento se crea un objeto. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 282 ‘2020 Parasigma de la programacién arentada a objtos ramacién Conceptd ik i Ejemplos Aplicaciones Pres a } — & ntadaa Clave Hell eee ineeatvos (applications html) ref tos (conceptg html) (philosophy.htm!) (examples.html) (slide ax.htm)) ©) Hello World Tank you for click the button Una ventana con un botén y el resultado de darle clic al botén Sobreescritura Consiste en sobreescribir métodos heredados de una clase padre. class Anima def hacerSonido(s pass class Perro (Animal): def hacerSonido(s: print ("Guau, Guau") htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 1362 ‘2020 Paracigma de la programacién arentada a objetos jramacién Conceptos cates offaye ja (Animajeinplos Alflicaciones Pres ntada a Clave Pripglbiosh a carson iMeysves=) + pplications.html) yrefe tos (concepts.htmi) Philosephy.htmn) yg examples html) (slide » print (" , ) x.html) Ejemplo de la clase Animal (Clase padre) y las clases perro y oveja (Clases hijas) sobreescribiendo el método "hacerSonido heredado” Hecho en Python3 Clase Abstracta Este tipo de clases nos permiten crear "métodos generales', que recrean un comportamiento comun, pero sin especificar como lo hacen. A nivel de cddigo tiene por particularidad que algunos de sus métodos no tienen “cuerpo de declaracion”. o Una clase que declara la existencia de métodos pero no la implementacion de dichos métodos (0 sea, las llaves {} y las sentencias entre ellas), se considera una clase abstracta. o Una clase es declarada abstracta cuando no es posible crear instancias de ella. o Una clase debe ser declarada abstracta si posee al menos un método declarada abstracto. o Un método abstracto es aquel que no posee implementaci6n. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl aise ‘2020 Paracigma de la programacién arentada a objetos iramacién Ejemplos Aplicaciones Pres + Esta parc! FEN ay pafemenS8gietens htm yrefi w-hern examples. '* Puede usar private y protected. Clase * Solo sus métodos abstract son implementados. ntadaa tos axhtml) (slid * No tiene implementaciones. '* Es totalmente abstracta. * Proporciona herencia multiple, ‘* Todos sus métodos son implementados. Clases abstractas vs Interfaces Interfaz Es un conjunto de métodos abstractos y de constantes cuya funcionalidad es la de determinar el funcionamiento de una clase, es decir, funciona como un molde o como una plantilla. También es una descripcién de las acciones que un objeto puede hacer. En programacion orientada a objetos una interfaz X describe todas las funciones que un objeto debe tener para poder ser un X. o Una interface es una variante de una clase abstracta con la condicién de que todos sus métodos deben ser abstractos. Si la interface va a tener atributos, éstos deben llevar las palabras reservadas static final y con un valor inicial ya que funcionan como constantes por lo que, por convencion, su nombre va en mayusculas. o Una clase implementa una o mas interfaces (separadas con comas ",’) con la palabra reservada implements. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 16092 ‘2020 Parasigma de a programacién arentada a objetos ramacién © Laarpaincipal difasencia entre interface y abstracbes que unaes rtada a iftterface propereiena un meéanisrro de eheapyataelon dye any 108 BPOLBLolog"GE"1GS" metsagss "iN forzar al usuario &'* utilizar la herencia. Ejemplo: Shape FartArcel) dase, Interface defines the expected behaviors (public interfaca) ofall imptewents Rectangle Triangle Length: double base: double eee cient coi Subclasses provide the actual seetiren():doubla | sgattran():doxbte «sss POWs Mostring():string. |stostringg)-string Un ejemplo de uso de una interfaz se presenta en la siguiente imagen a través de un diagrama de clases, donde las clases InstrumentoMusical y Sirena implementan de la_interfaz Sonoro que cuenta con la declaracién del método sonar(volumen: int). htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 16092 ‘2020 Parasigma de la programacién arentada a objtos vramacién Conceptos Filosofi Ejempl Aplicaqones Pres atada a Clave Principips < Polimorfismo Son comportamientos diferentes, asociados a _ objetos distintos, pueden compartir el mismo nombre; al Ilamarlos por ese nombre se utilizara el comportamiento correspondiente al objeto que se esté usando. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 26892 ‘2020 Parasigma de a programacién arentada a objetos ramacién Conceptos Filosofia Ejemplos Aplicaciones Pres atadaa Clave Principios A tives (applicatiofs.htm!) yrefi tos (concept. htm) (philosopt (09 ples.htm) (slid 2x.html) Cn) Cn) E| método hablar puede ser sobreescrito por cualquier entidad (humano, perro, pato, gato) Ejemplo: Shape -color +getArea() +toString() ON [a Rectangle Triangle -length ~base -width -height +getArea() +getArea() +toString() toString () ‘Ambas clases deben sobreescribir el método getArea() puesto que se calculan de diferentes maneras en ‘cada caso. Tipos de polimorfismo: © Polimorfismo Ad Hoc © Polimorfismo paramétrico htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 2na2 ‘2020 Parasigma de a programacién arentada a objetos ramacién 0 Reodiprorfismo dessubtipos — ejemplos Aplicaciones Pres atada a Clave Principios interactivos (applications.html) yrefe sentm) Polinior ism Ad Hoc'Se refiere’at nclones que cambian si” comportamiento dependiendo del tipo de argumentos que reciben (sobrecarga de métodos o funciones). La sobrecarga de métodos hace referencia a varios métodos con el mismo nombre pero con diferentes firmas. Ejemplo: Glass Escrivor ‘ public void Eseribe()( Console. VriteLine("No tengo parémetros") ; > public void Escribe(int numero) ( onsole.WeiteLine("nimero: " + numer. ToString())+ > public void Escribe(int numerc, string texto) ( Console. WriteLine("Wimero: " + numero. ToString() + ") Texto: " + texto): > public void Escribe(int numerc, string texto, DateTim= fecha) ( Console. WriteLine("whimero: "+ numero. ToString() + ", Texto: "+ texto +", Fecha: " + fecha. ToString() En el lenguaje de programacién ABAP4 también se permite la sobrecarga de métodos como un tipo de polimorfismo. CLASS empleado DEFINITION, DATA nombre TYPE string. DATA apellido TYPE string METHODS. modificarNombre IMPORTING i_nombre TYPE string, modificarNombre IMPORTING i_nombre TYPE string i_apellido TYPE stri ENDCLASS. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl a2 ‘182020 Parag dol programacin oriented a objets ramacién Conceptos Filosofia y Ejemplos Aplicaciones Pres rtadaa En ekiefemplo anterieritenemos leestase Empleadayseideseaet een realiZarte’sobrecarye der étodembdifitarNombre. Este tips" de polimorfismo se implementa como se muestra en la siguiente imagen, el método recibe un parametro inombre para una funcionalidad especifica y como segunda medida, el método recibe dos pardmetros i_nombre y i_apellido para otro procedimiento en particular. CLASS empleado IMPLEMENTATION. METHOD modificarNombre IMPORTING i_nombre TYPE string. nombre = i_nombre ENDMETHOD. METHOD modificarNombre IMPORTING i_nombre TYPE string i_apellido TYPE string. nombre = i_nombre apellido = i_apellido ENDMETHOD. ENDCLASS. Polimorfismo paramétrico: El polimorfismo paramétrico permite que las funciones y las clases puedan escribirse de forma genérica, de tal manera que pueda manipular los datos de la misma manera sin importar el tipo.Ejemplos: o C++- Templates o Java - Generics Polimorfismo de subtipos: Es una forma de polimorfismo en la cual los subtipos de un tipo pueden sustituir el comportamiento de las funciones del supertipo con su propia implementacion. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 20192 ‘2020 Paradigma de a programacién arentada a objtos ramacién AGORCEMOS act ciess cofillosofiay pub Ble OARS public class Progranador + Enplead public override void Calcularsono( Boro = Sueldo * 23 y public cles public override void Caleulardono() Bono = Sueldo ~ 15; Atributos estaticos Son atributos inherentes a la clase en si y no a una instancia de esta. class Estudiante { static int num String nombre; int edad; String direccion; String carrera; Estudiante ( rf numero_estudiantes++; Ejemplo de la clase estudiante con el atributo estatico numero_estudiantes. htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 0192 ‘2020 Paradigma de a programacién arentada a objtos jramacién Conceptos Filosofia y Ejemplos Aplicaciones Pres rtadaa Este @teibuto, comeinseopuede obiservars incrementatsutvalor enef wemy 2 cadeacvez™yue Seloepedtina iffetakcia de esta clase, esté' atributo, como ya se mencioné, pertenece a la clase y no al objeto, asi que el numero de estudiantes sera de la clase Estudiante y no del objeto instanciado de esta. Estudiante el new Estudiante()? Estudiante e2 = new Estudiante(); Estudiante e3 = new Estudiante(); System.out.print("El numero de estudiantes es System. out.println (Estudiante.numero_estudi Ejemplo del uso de atributos estaticos Como se ve en el ejemplo, se instanciaron 3 objetos de la clase estudiante al consultar este atributo se debe accedes desde la clase estudiante y no desde la instancia de esta. Métodos estaticos Son métodos inherentes a la clase en si y no a una instancia de esta. static List ordenarAlfabeticamente (List e) { e.sort (Comparator. comparing (estudiante -> estudiante.nombre)); return €7 Ejemplo del método estético ordenarAlfabeticamente que retorna una lista ordenada lexicogréficamente, Clases estaticas htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 3132 ‘2020 Paradigma de a programacién arentada a objtos iramacién Conceptos Filosofia Ejemplos Aplicaciones Pres ntadaa Clafelass ObjetomRfincipios interactivos (applications hin!) yrefi tos (cobceptsA¥ARic cieblosophybte® ——_(examples.htm!) (slid axhtml) static String nombre= - "ObjetoB estatico"; String nombre = "QbjetoB no estatico"; } class Objetoc{ String nombre = "ObjetoC no estatico”; System. out.println (ObjetoA.ObjetoB. nombre) ; ObjetoA.ObjetoB objl = new ObjetoA.ObjetoB(); (ObjetoA obj2 = new ObjetoA(); ObjetoA.ObjetoC obj3 = obj2.new ObjetoC()-: Ejemplos de clases estaticas en java y el acceso a ellas. Paradigma (index.htm!) | Conceptos (concepts.html) | Filosofia (philosophy.html) | Ejemplos (examples.html) | Aplicaciones (applications.html) | Referencias (slides. tml) Creado y modificado por: Laura Alvarez, Helmer Avendafo, Yeison Garcla, Sebastiin Morales, Edwin Bohérquez, Santiago Hernandez, Sebastin Moreno, Cristian Orjuela Copyright © Paradigmas de Programacion - UNAL 2017 htps:erestrepoca github io/paradigmas-de-pragramacion/poo|peo_teoralconcep.himl 282

También podría gustarte