Programación orientada a objetos I

Documentos relacionados
Curso de Java POO: Programación orientada a objetos

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

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

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

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

Forma Básica Clase Java

Programación Orientada a Objetos (POO)

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico

Los constructores son funciones miembro especiales que sirven para inicializar un objeto de una determinada clase al mismo tiempo que se declara.

Modulo 11. Clases y Objetos en Java

Tema 6. Gestión dinámica de memoria

Guía práctica de estudio 04: Clases y objetos

Programación orientada a objetos

Tema 3. Programación orientada a objetos en Java (Parte 1)

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

Derechos de Acceso: COMPOSICION

Diseño Basado en Componentes. Curso 2008 / 09

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

Polimorfismo. Métodos virtuales

Tema: Clases y Objetos en C++.

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

Introducción a C++ y Code::Blocks

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

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

Categorías de métodos. Métodos constructores y destructores

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

Conceptos de Programación Orientada a Objetos

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

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

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

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Las clases como tipos de datos definidos por el usuario

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

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

Principios de Computadoras II

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

Ejercicio 1. Ejercicio 2

Java Inicial (20 horas)

Aplicaciones de Escritorio

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

Definición y Conversión de datos. Agustín J. González ELO-329

Necesidad de la herencia pertenencia variedad is a has a herencia variedad definir una clase modificando una o más clases añadir nuevos miembros

Programación Orientada a Objetos

Prof. Dr. Paul Bustamante

Tema 13: Apuntadores en C

Programación con Visual C#

Capítulo 6. Introducción a la POO

Clases en C++ Agustín J. González ELO329

1. Asignar Responsabilidades a componentes de software es la habilidad más importante del AOO. Porque:

Introducción a la Orientación a Objetos

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

Resultado de Aprendizaje:

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

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


RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Tema 3: Programación orientada a objetos (I)

Programación Orientada a Objetos en Java

CONTENIDO. Programación orientada a objetos - POO. Clases. Constructores y destructores. Definiciones. Entrada y salida

Estructuras de Datos y Algoritmos. Primeros ejemplos de TDA

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

ANEXO XVII DE LA RESOLUCION N

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

C# para no Programadores

Prácticas de Programación

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

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Taller de Programación I. Tema 06: Orientación al Objeto en Java (parte 2)

ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:

Elementos de un programa en C

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

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

DIAGRAMAS UML ANDRÉS ESTEBAN MARTÍNEZ HUTA CICLO DE VIDA DEL SOFTWARE GLORIA CECILIA RÍOS MUÑOZ

Programación Avanzada

JAVA 7 Los fundamentos del lenguaje Java

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

Capítulo 16. Diagrama de Clases UML

TEMA 8: Gestión dinámica de memoria

AREA A LA QUE PERTENECE: 103 Matemática Básica 2 34 créditos POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015

Introducción al lenguaje C

Curso Introducción JAVA Pág.: 1

1

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

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

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

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

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

Programación estructurada (Introducción a lenguaje C)

Consigue las herramientas que necesitas Inicio: 20 Noviembre 2016

Tema: Sobrecarga de Operadores.

Tema: Herramientas UML, Análisis y diseño UML

Transcripción:

Introducción Programación orientada a objetos I Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es Qué es la POO? Un paradigma de programación Un paradigma es una forma de afrontar la construcción código software No hay paradigmas mejores ni peores Todos tienen sus ventajas e inconvenientes Hay distintos paradigmas: POO, Estructurado, Funcional, Lógico, etc. Características de la POO Elementos de la POO Facilidad de diseño y relación con el mundo real Reusabilidad y facilidad de mantenimiento Del lenguaje máquina hacia el mundo real Sistemas más complejos Abstracción Trabajo en equipo Objetos: Elementos que interactúan entre sí para conseguir un fin Autónomos Con una funcionalidad concreta definida Instancias de una clase Clases: Especificación de un conjunto de elementos Todo objeto pertenece a una clase 1

Objetos y clases Objetos Los objetos tienen propiedades que los distinguen Comunes a todos los de su clase Propias de cada uno Los objetos representan los conceptos fundamentales del programa y de su interacción surge la funcionalidad Los objetos interactúan entre sí por medio de mensajes Como funciona un programa orientado a objetos? Buscar No hay el café Comprar café Cocina Tienda Resumen de objetos y clases Clases Representan conceptos o entidades significativas de un problema Se pueden ver como plantillas para definir elementos (objetos) Objetos Elementos con comportamiento definido en la clase y estado concreto Instancias de clase Interactúan por medio de mensajes Café 2

Otros conceptos importantes UML Encapsulamiento Polimorfismo Herencia UML (Unified modeling language): Lenguaje unificado de modelos Mapa del código. No sirve para desarrollar sino para describir Se utilizan diagramas diferentes. 13 en UML 2.0 Se verán más adelante Declaración de clases Una clase en C++ debe ser declarada antes de poder ser utilizada class nombre cuerpo de la clase }; Cuerpo de la clase: atributos y métodos Estado: Describe la situación interna del objeto. Existen varias formas de definir distintos estados El estado distingue a los objetos de la misma clase Cada uno tiene su estado Son los atributos Comportamiento: Describe los servicios que proporciona una clase lo que se puede hacer con ella). Son los métodos 3

Atributos Métodos Describen el estado interno de cada objeto concreto Pueden ser: Tipos básicos (int, bool, char, etc.) Arrays de elementos Punteros Otros objetos Definen el comportamiento de los objetos de una clase Devuelven (o no) un resultado Pueden necesitar parámetros Métodos y atributos Especificación e Implementación Atributos raza: Bulldog edad: 1 año nombre: Pancho Métodos ladra() come() duerme() Dos vistas diferentes de una clase: Especificación de la clase Declaración de atributos y métodos Implementación de la clase Definición de los métodos Ocultación de los detalles de implementación 4

Especificación (archivo *.h) Perro.h Implementación (archivo *.cpp) Perro.cpp class Perro int anyos; int edad(); }; Atributos Métodos #include Perro.h int Perro::edad() return anyos; } Ejercicio Añada el método ladra a la clase Perro para que imprima el mensaje GUAU cuando sea llamado Perro.h Perro.cpp class Perro }; int anyos; int edad(); Compilar #include Perro.h int Perro::edad() } return anyos; Visibilidad/Control de acceso Puede (y suele) haber distintos niveles de visibilidad para los miembros (atributos y métodos) de una clase. Existen tres tipos de modificadores: public: se puede acceder desde cualquier lugar private: sólo se puede acceder desde la propia clase protected: sólo se puede acceder desde la propia clase o desde una clase que herede de ella Se verá más en detalle en el tema de herencia Se aplican a todas las definiciones que vengan a continuación Hasta que se encuentre un nuevo modificador Solamente hay que utilizarlo en la especificación de la clase g++ -c Perro.cpp 5

Visibilidad/Control de acceso Métodos habituales: Constructor Sólo se puede acceder/invocar a anyos y edad desde métodos de la clase Perro ladra puede ser llamado desde cualquier otra clase Si no se especifica nada en class la visibilidad es private class Perro int anyos; public: void ladra(); private: int edad(); }; Sirve para inicializar un objeto al crearlo Se utiliza el nombre de la clase No devuelve nada por definición NombreClase( parámetros ) { } Métodos habituales: Constructor Métodos habituales: Constructor Perro.h class Perro Perro.cpp #include Perro.h Existe sobrecarga (distintos parámetros) class Perro #include Perro.h int anyos; public: Perro(int an); }; Perro::Perro(int an) anyos = an; } enum Color {MARRON, NEGRO}; int anyos; Color color; public: Perro(int an); Perro(int an, Color col); }; Perro::Perro(int an) anyos = an; color = MARRON; } Perro::Perro(int an, Color col) anyos = an; color = col; } 6

Métodos habituales: Constructor Existe sobrecarga (distintos parámetros) class Perro #include Perro.h Perro::Perro(int an) enum Color {MARRON, NEGRO}; int anyos; Perro(an,MARRON); Color color; } public: Perro::Perro(int an, Color col) Perro(int an); anyos = an; Perro(int an, Color col); color = col; } }; Algunas preguntas Qué ocurre si no hay constructor en una clase? El compilador implícitamente crea el constructor por defecto Siempre tienen algún valor los atributos de una clase? Sí, siempre tendrán algún valor (aunque en ocasiones pueda ser indeterminado) Qué ocurre si en el constructor de un objeto no se inicializan todos sus atributos? Que tendrán un valor indeterminado Algunas preguntas Métodos habituales: Destructor Qué ocurre si se define un constructor con visibilidad private? Sólo se podrán crear objetos desde métodos internos de la clase Métodos de clase Se puede utilizar una clase como atributo de otra? Sin ningún problema Puedo ejecutar un método sin haber creado un objeto de esa clase? No, para ejecutar un método de un objeto es necesario haber creado antes el objeto. Los métodos de clase o estáticos sí que se pueden ejecutar sin necesidad de un objeto (se verán más adelante) Para liberar recursos del objeto Muy utilizado cuando se hace uso de la memoria dinámica Se verá más adelante Cerrar ficheros, conexiones, etc. ~ + NombreClase No devuelve ni recibe nada por definición Puede tener visibilidad privada pero no es lo recomendable 7

Métodos habituales: Destructor Métodos habituales: Get/Set Perro.h class Perro ~Perro(); }; Perro.cpp #include Perro.h Perro::~Perro() } Sirven para modificar los atributos de una clase No son un nuevo tipo de métodos Convenio de factor Get Devuelve un atributo sin modificarlo Set Modifica un atributo con el valor pasado como parámetro Métodos habituales: Get/Set Asignación de objetos Perro.h class Perro int anyos; int getanyos(); void setanyos(int valor); }; Perro.cpp #include Perro.h int Perro::getAnyos() return anyos; } void setanyos(int valor) anyos = valor; } Por medio del operador = Se hace una copia de todos los atributos Se puede redefinir Ya se verá OJO El operador = tiene dos funciones Perro a; Perro b; b=a;? Perro c = b;? 8

Asignación de objetos Comparación de objetos Por medio del operador = Se hace una copia de todos los atributos Se puede redefinir Ya se verá OJO El operador = tiene dos funciones Perro a; Perro b; b=a; // asignación Perro c = b;// Constructor copia // Misma llamada que Perro c(b) Qué devuelve este código? class Prueba{ public: }; int main() { Prueba p,p1; p=p1; if (p==p1) cout << "son iguales" << endl; else cout << "no lo son" << endl; } Comparación de objetos Creación de objetos Por defecto no se genera el código para el operador de comparación == Ni para el operador = Hay que definirlo para comparar objetos O crearnos otro método (ej. equals) Después de que se haya declarado e implementado los métodos de una clase se puede crear un objeto de esa clase Similar al de cualquier otra variable Pasando los argumentos al constructor Perro mipancho(2,negro); Perro mipancho; // Si no hay parámetros 9

Operador. Para acceder a los miembros de un objeto Perro mipancho(2,negro); mipancho.ladra(); Color elcolordepancho = mipancho.color; mipancho.setanyos(3); Dentro de un método no hace falta utilizar el operador. para acceder a un miembro de la misma clase Ejercicios 10