SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
PNFSI

  Asignatura: Desarrollo de Software

  Tema 1: Programación Orientada a Objetos




Ing. Zamantha González                 Abril, 2008
Contenido
Conceptos básicos
• Clase
• Objeto o instancia
• Atributos
• Métodos
• Constructores
• Encapsulamiento
Historia: OO
•   OO (Orientación a Objetos): desarrollo y
    modelización de software que facilita la
    construcción de sistemas complejos a partir de
    componentes.
•   Se modela el mundo real tan fielmente como
    sea posible.
•   Al comparar la OO y las Tradicionales
    (Procedimentales estructuradas) hay una
    reducción de código como mínimo del 40%.
Historia: OO
•   Las 4 Propiedades más fuertes de OO son:
    – Abstracción: Vista externa del Objeto, con el fin de
      separar el Acceso a los Objetos, de su
      implementación interna.
    – Encapsulación: Propiedad que asegura que el
      contenido de la información de un objeto está oculto
      al mundo exterior.
    – Modularidad: Permite dividir una aplicación en
      partes más pequeñas llamadas módulos, tan
      independientes como sea posible.
    – Jerarquía: Ordena la Abstracción con la Herencia.
Paradigma OO
Resultado de la evolución natural de la
programación, devenido en        metodología de
programación de propósito general que simula la
forma en que el hombre trabaja y cuya idea básica
es que percibimos al mundo que nos rodea como
una variedad de objetos.
Desarrollo Tradicional Frente al OO
                Tradicional            OO

Diseño         Descendente      Ascendente
Lenguajes      Estructurados    OO
Se Centra en   Operaciones      Los Objetos Reales
Idea           Descomponer      Reflejar el mundo
Clave          una Aplicación   real mediante el
               en programas     ensamblado de
               más pequeños     clases
Ejemplo: Enviar flores a una persona
           de otra ciudad
Conceptos básicos
Un Objeto es una entidad con una estructura de
datos interna bien definida, junto a un conjunto de
acciones que describen su comportamiento. Es la
unidad básica de la POO.

Ejemplo:
María la florista
Perla la florista
José el florista
Conceptos básicos

•Un objeto o instancia es una variable concreta de
una clase con su propia copia de variables miembros.


Un objeto tiene estado, comportamiento e identidad.

• Tiene datos internos que le dan el estado.
• Tiene métodos para producir comportamiento.
• Cada objeto tiene una dirección única en memoria lo
que le da identidad.
Conceptos básicos
Mensaje: Forma de solicitar una acción a un objeto.


   Cliente                      Servidor
                Mensaje
   Emisor                       Receptor


         Objeto,                     Objeto
         Usuario,
         Aplicación
Conceptos básicos
Una clase es:
• una categoría de objetos con características
comunes.
• una plantilla que se usa para crear múltiples objetos
con características similares.

Las clases engloban las características de un
conjunto particular de objetos.

Cuando se escribe un programa en un lenguaje
orientado a objetos no se definen objetos
individuales sino clases de objetos.

Ejemplo: Florista
Conceptos básicos

• Las clases son tipos de variables o tipos de datos
  creados por el usuario.

• Se puede extender un lenguaje de programación
  adicionando nuevos tipos de datos específicos
  acorde a las necesidades del problema a resolver.

• Las clases pueden estar formadas por variables
  miembros y funciones miembros.
Implementación
// En C++
class Circulo {
};

class TCirculo {
};


Buenas Prácticas:
• Nombrar las clases utilizando la notación Camell,
comenzando o no con la letra T para indicar que es
un tipo de datos.
• Colocar la apertura de ambiente en la misma línea
o en una línea aparte.
Implementación
// Sintaxis en C++
class <nombre de la clase>
{
private: [lista de miembros]
protected: [lista de miembros]
public: [lista de miembros]
};
Conceptos básicos
Cada clase puede estar compuesta por:

• Atributos: definen el estado de la clase.
   • atributos pasivos,
   • variables miembros,
   • campos.

• Métodos: definen el comportamiento de la clase.
  • funciones miembros,
  • atributos activos,
  • operaciones,
  • comportamiento,
  • responsabilidades.
Notación UML para
 Ejemplos:                representar una clase

                               Florista
                    Nombre
 Variables Miembros Salario
                    Edad
Funciones miembros Vender flores
                    Enviar flores a otra ciudad

                            Bombillo
                    Consumo
 Variables Miembros Enceder
                    Apagar
Funciones miembros Aumentar Brillo
                    Disminuir brillo
Atributos o variables miembros
Los atributos son características, propiedades que
hacen que un objeto se diferencie del otro. Pueden
determinar apariencia, cualidades, estado, etc.

Los atributos se definen por variables.
Para cada variable se define su tipo.

En C++ es posible definir:
• Variables o atributos de clase
• Variables o atributos de objeto o de instancia
Sintaxis

//en C++
Tipo nombreAtributo;
Variables de clases
• Define un atributo para toda la clase.

• Aplica para la clase y para todas sus instancias.

• Sólo almacena una copia con independencia de la
cantidad de objetos.

• Existe aunque no se haya creado ningún objeto de
la clase.

• Debe ser definida como static.
Variables de objetos o de instancia

• Define un atributo de un objeto en particular.

• Cada instancia u objeto almacena su propia copia
de variables de objeto.

• Los atributos son por defecto de objetos o de
instancia a menos que se califiquen como static (de
clase).
Ejemplos
// en C++
class Circulo {
  static int numCirculos = 0;
  double x, y, r;
};

Las variables de clases son buenas para la
comunicación entre diferentes objetos de la clase o
para llevar un registro de información relativa a toda
la clase.

Ejemplo: el número total de círculos creados.
Ejemplos
// en C++
class Fecha {
  int d;
  int m;
  int a;
  static TDate defaultDate;
};

Buenas prácticas
Definir cada atributo en una línea independiente
aunque sean del mismo tipo.
Hace el código más legible y permite comentar mejor.
Métodos o funciones miembros
El comportamiento de una clase se implementa a
través de sus métodos o funciones miembros.

Una clase o un objeto puede llamar métodos de
otras clases para:
• Indicar a otro objeto que cambie
• Pedir a otro objeto que haga algo

Es posible definir:
• Métodos de instancia: aplican a cada objeto de la
  clase.
Métodos de clase
• Están disponibles para cualquier instancia de la
clase y para otras clases.

• No se requiere una instancia de la clase para poder
invocar a un método de clase.

• Para definir los métodos de clase hay que
anteponer a la definición del método la cláusula
static.
Tipos de funciones miembros

• Funciones (procedimientos)
• Constructores
• Destructores

En C++ todas      son   funciones,   no   existen
procedimientos.
Definiendo métodos
• Cada objeto     puede    satisfacer   sólo   ciertos
requerimientos.

• Los requerimientos que puede resolver el objeto
están definidos por su interfaz y los tipos que hay en
ella.

• Cuando se hace un requerimiento a un objeto un
método es llamado.
Definiendo métodos
La definición básica de un método cuenta de:
• Tipo de retorno (tipo de objeto o tipo primitivo)
• Nombre del método
• Lista de parámetros
• Cuerpo del método

Las tres primeras partes se conocen como interfaz o
firma del método.
Definiendo clases

En C++:
• es posible definir variables y funciones que
 no pertenezcan a una clase.
• las clases se declaran en un fichero
 <nombre>.h y se implementan sus métodos
 en un fichero <nombre>.cpp a menos que la
 función sea inline.
Ejemplo en C++
// en C++, fichero.h        // en C++, fichero.h
class Date {                class Date {
  int d;                      int d;
public:                     public:
  //por defecto es inline     int D();
  int D(){return d;}        };
};
                            //En fichero.cpp
                            inline int Date::D() {
                              return d;
                            }
                            //otra variante
                            int Date::D() {
                              return d;
                            }
Constructor
Es un tipo especial de método utilizado para crear
objetos o instancias de una clase.

Características
• Su nombre coincide con el de la clase.
• No tiene valor de retorno (ni void)
• Una clase puede tener varios constructores (ejemplo
  típico de sobrecarga de funciones), pero la lista de
  parámetros tiene que variar.
• Los constructores deben diferir en tipo y/o cantidad
  de parámetro.
Constructor
Características

• Si la clase tiene un constructor, todos los objetos de
  la clase deben ser inicializados invocándolo.
• Si el constructor tiene parámetros al invocarlo hay
  que suministrarlos.
• De no definirse un constructor para la clase, el
  compilador genera un constructor por defecto.
• El constructor por defecto, no tiene parámetros e
  inicializa cada atributo con el valor nulo por defecto.
• Si un constructor no tiene parámetros se considera
  el constructor por defecto.
Constructores en C++

• Existe un tipo especial de constructor llamado
  constructor copia, cuyo parámetro es una referencia
  a una instancia de la clase.
• El constructor copia debe copiar cada miembro de la
  clase.
• No hay constructores virtuales ya que al construir se
  debe conocer el tipo exacto del objeto.
Encapsulamiento
Es una de las propiedades de la POO que define que
el objeto debe ser una cápsula o caja negra que
encapsula su funcionamiento y estructura interna.

Sólo se ven desde afuera los miembros (la interfaz
para el caso de los métodos) con visibilidad pública.



Buenas Prácticas: los atributos deben ser privados o
protegidos y se debe acceder a ellos a través de los
métodos que pueden ser públicos.
Encapsulamiento

             INTERFAZ de la CLASE

                    CLASE
                            CLASE
                 Datos y
           Funciones Miembros
         Privadas, Protegidas y
               de Paquete

     Atributos Públicos   Métodos Públicos


instancia1                                   instancia2
Encapsulamiento
El encapsulamiento permite:

• Ocultar detalles de implementación.

• Simplificar el programa.

• Minimizar el impacto del cambio.

• Garantizar integridad de los datos.
Alcance de variables

En C++, existen variables:

•Globales
•Locales
•Variables de instancia
•Variables de clase
Alcance de variables
En C++, las clases tienen su propio ámbito.
int a = 1; // variable global

class TClase
{
  int a;
public:
  TClase(int);
};

TClase clase(5);
TClase.a; // error, trata de encontrala en el
          // ámbito de TClase y es privada.

Mais conteúdo relacionado

Mais procurados

programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
jent46
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
Giancarlo Aguilar
 
Ejercicios en clase Unidad II
Ejercicios en clase Unidad IIEjercicios en clase Unidad II
Ejercicios en clase Unidad II
Luis Caiza
 
ConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeans
guest044583b
 

Mais procurados (20)

programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Persistencia de datos en Java
Persistencia de datos en JavaPersistencia de datos en Java
Persistencia de datos en Java
 
Introduccion a python 3
Introduccion a python 3Introduccion a python 3
Introduccion a python 3
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Ejercicios en clase Unidad II
Ejercicios en clase Unidad IIEjercicios en clase Unidad II
Ejercicios en clase Unidad II
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
6 Curso de POO en Java - clases y objetos
6  Curso de POO en Java - clases y objetos6  Curso de POO en Java - clases y objetos
6 Curso de POO en Java - clases y objetos
 
Persistencia de datos_hibernate_arquitecturas_de_software
Persistencia de datos_hibernate_arquitecturas_de_softwarePersistencia de datos_hibernate_arquitecturas_de_software
Persistencia de datos_hibernate_arquitecturas_de_software
 
Modelo de entidad relación extendido
Modelo de entidad relación extendidoModelo de entidad relación extendido
Modelo de entidad relación extendido
 
Polimorfismo y herencia
Polimorfismo y herenciaPolimorfismo y herencia
Polimorfismo y herencia
 
Poo Java
Poo JavaPoo Java
Poo Java
 
Poo en java herencia
Poo en java   herenciaPoo en java   herencia
Poo en java herencia
 
Java colecciones
Java coleccionesJava colecciones
Java colecciones
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
ConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En NetbeansConexióN A Base De Datos En Netbeans
ConexióN A Base De Datos En Netbeans
 
Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Vista lógica
Vista lógicaVista lógica
Vista lógica
 
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UMLUnidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
 

Destaque

Introducción a la programación orientada a objetos empleando c++
Introducción a la programación orientada a objetos empleando c++Introducción a la programación orientada a objetos empleando c++
Introducción a la programación orientada a objetos empleando c++
Aldo Hernán Zanabria Gálvez
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prev
jtk1
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
jtk1
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
ale8819
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación Estructurada
Michael de la Cruz
 

Destaque (7)

Introducción a la programación orientada a objetos empleando c++
Introducción a la programación orientada a objetos empleando c++Introducción a la programación orientada a objetos empleando c++
Introducción a la programación orientada a objetos empleando c++
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prev
 
Programación!! . .
Programación!! . .Programación!! . .
Programación!! . .
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación Estructurada
 

Semelhante a Programación Orientada a Objetos

programacion orientada a objetos con PHP .pptx
programacion orientada a objetos con PHP .pptxprogramacion orientada a objetos con PHP .pptx
programacion orientada a objetos con PHP .pptx
RICARDOEDGARDOQUINTA
 
Elementos avanzados de poo
Elementos avanzados de pooElementos avanzados de poo
Elementos avanzados de poo
LCA
 
Primeraclaseobjetos Clases
Primeraclaseobjetos ClasesPrimeraclaseobjetos Clases
Primeraclaseobjetos Clases
mtemarialuisa
 
Primeraclaseobjetos Clases
Primeraclaseobjetos ClasesPrimeraclaseobjetos Clases
Primeraclaseobjetos Clases
mtemarialuisa
 

Semelhante a Programación Orientada a Objetos (20)

Poo 1
Poo 1Poo 1
Poo 1
 
programacion orientada a objetos con PHP .pptx
programacion orientada a objetos con PHP .pptxprogramacion orientada a objetos con PHP .pptx
programacion orientada a objetos con PHP .pptx
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
Action script 3_basic
Action script 3_basicAction script 3_basic
Action script 3_basic
 
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfPROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
 
PROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETOPROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETO
 
Elementos avanzados de poo
Elementos avanzados de pooElementos avanzados de poo
Elementos avanzados de poo
 
C1 - Conceptos OOP
C1 - Conceptos OOPC1 - Conceptos OOP
C1 - Conceptos OOP
 
Resumen Programación Orientada a Objetos 20_06_2023 (1).pptx
Resumen Programación Orientada a Objetos 20_06_2023 (1).pptxResumen Programación Orientada a Objetos 20_06_2023 (1).pptx
Resumen Programación Orientada a Objetos 20_06_2023 (1).pptx
 
Clase3 Programación Orientada a Objetos
Clase3 Programación Orientada a ObjetosClase3 Programación Orientada a Objetos
Clase3 Programación Orientada a Objetos
 
Primeraclaseobjetos clases
Primeraclaseobjetos clasesPrimeraclaseobjetos clases
Primeraclaseobjetos clases
 
Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015Programación Orientada a Objetos en Java - Parte I 2015
Programación Orientada a Objetos en Java - Parte I 2015
 
POO con PHP
POO con PHPPOO con PHP
POO con PHP
 
Primeraclaseobjetos Clases
Primeraclaseobjetos ClasesPrimeraclaseobjetos Clases
Primeraclaseobjetos Clases
 
Primeraclaseobjetos Clases
Primeraclaseobjetos ClasesPrimeraclaseobjetos Clases
Primeraclaseobjetos Clases
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)
 
Manual de java_2
Manual de java_2Manual de java_2
Manual de java_2
 
manual 9
manual 9manual 9
manual 9
 
Manual de java 3
Manual de java 3Manual de java 3
Manual de java 3
 

Mais de Zamantha Gonzalez Universidad Nacional Abierta

Mais de Zamantha Gonzalez Universidad Nacional Abierta (20)

Elementos del diseño visual
Elementos del diseño visualElementos del diseño visual
Elementos del diseño visual
 
Instructivo Autocorreccion Pruebas Objetivas UNA
Instructivo Autocorreccion Pruebas Objetivas UNAInstructivo Autocorreccion Pruebas Objetivas UNA
Instructivo Autocorreccion Pruebas Objetivas UNA
 
Estrategias
EstrategiasEstrategias
Estrategias
 
Aspectos básicos de google classroom
Aspectos básicos de google classroomAspectos básicos de google classroom
Aspectos básicos de google classroom
 
Lineamientos curso de iniciación 2017 1
Lineamientos curso de iniciación 2017 1Lineamientos curso de iniciación 2017 1
Lineamientos curso de iniciación 2017 1
 
Presentacion telemática educativa
Presentacion telemática educativaPresentacion telemática educativa
Presentacion telemática educativa
 
Uso y creacion de unidades
Uso y creacion de unidadesUso y creacion de unidades
Uso y creacion de unidades
 
Estrategias objetivo 8
Estrategias objetivo 8Estrategias objetivo 8
Estrategias objetivo 8
 
Estrategias objetivo 7
Estrategias objetivo 7Estrategias objetivo 7
Estrategias objetivo 7
 
Estrategias objetivo 6
Estrategias objetivo 6Estrategias objetivo 6
Estrategias objetivo 6
 
Estrategias objetivo 5
Estrategias objetivo 5Estrategias objetivo 5
Estrategias objetivo 5
 
Geolocalización móvil
Geolocalización móvilGeolocalización móvil
Geolocalización móvil
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Traductores de lenguaje
 
Tipos de datos en pascal
Tipos de datos en pascalTipos de datos en pascal
Tipos de datos en pascal
 
EVERNOTE
EVERNOTEEVERNOTE
EVERNOTE
 
Encuentro inicial
Encuentro inicialEncuentro inicial
Encuentro inicial
 
Encuentro inicial estudiantes primer semestre
Encuentro inicial estudiantes primer semestreEncuentro inicial estudiantes primer semestre
Encuentro inicial estudiantes primer semestre
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Traductores de lenguaje
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Programación Orientada a Objetos

  • 1. PNFSI Asignatura: Desarrollo de Software Tema 1: Programación Orientada a Objetos Ing. Zamantha González Abril, 2008
  • 2. Contenido Conceptos básicos • Clase • Objeto o instancia • Atributos • Métodos • Constructores • Encapsulamiento
  • 3. Historia: OO • OO (Orientación a Objetos): desarrollo y modelización de software que facilita la construcción de sistemas complejos a partir de componentes. • Se modela el mundo real tan fielmente como sea posible. • Al comparar la OO y las Tradicionales (Procedimentales estructuradas) hay una reducción de código como mínimo del 40%.
  • 4. Historia: OO • Las 4 Propiedades más fuertes de OO son: – Abstracción: Vista externa del Objeto, con el fin de separar el Acceso a los Objetos, de su implementación interna. – Encapsulación: Propiedad que asegura que el contenido de la información de un objeto está oculto al mundo exterior. – Modularidad: Permite dividir una aplicación en partes más pequeñas llamadas módulos, tan independientes como sea posible. – Jerarquía: Ordena la Abstracción con la Herencia.
  • 5. Paradigma OO Resultado de la evolución natural de la programación, devenido en metodología de programación de propósito general que simula la forma en que el hombre trabaja y cuya idea básica es que percibimos al mundo que nos rodea como una variedad de objetos.
  • 6. Desarrollo Tradicional Frente al OO Tradicional OO Diseño Descendente Ascendente Lenguajes Estructurados OO Se Centra en Operaciones Los Objetos Reales Idea Descomponer Reflejar el mundo Clave una Aplicación real mediante el en programas ensamblado de más pequeños clases
  • 7. Ejemplo: Enviar flores a una persona de otra ciudad
  • 8. Conceptos básicos Un Objeto es una entidad con una estructura de datos interna bien definida, junto a un conjunto de acciones que describen su comportamiento. Es la unidad básica de la POO. Ejemplo: María la florista Perla la florista José el florista
  • 9. Conceptos básicos •Un objeto o instancia es una variable concreta de una clase con su propia copia de variables miembros. Un objeto tiene estado, comportamiento e identidad. • Tiene datos internos que le dan el estado. • Tiene métodos para producir comportamiento. • Cada objeto tiene una dirección única en memoria lo que le da identidad.
  • 10. Conceptos básicos Mensaje: Forma de solicitar una acción a un objeto. Cliente Servidor Mensaje Emisor Receptor Objeto, Objeto Usuario, Aplicación
  • 11. Conceptos básicos Una clase es: • una categoría de objetos con características comunes. • una plantilla que se usa para crear múltiples objetos con características similares. Las clases engloban las características de un conjunto particular de objetos. Cuando se escribe un programa en un lenguaje orientado a objetos no se definen objetos individuales sino clases de objetos. Ejemplo: Florista
  • 12. Conceptos básicos • Las clases son tipos de variables o tipos de datos creados por el usuario. • Se puede extender un lenguaje de programación adicionando nuevos tipos de datos específicos acorde a las necesidades del problema a resolver. • Las clases pueden estar formadas por variables miembros y funciones miembros.
  • 13. Implementación // En C++ class Circulo { }; class TCirculo { }; Buenas Prácticas: • Nombrar las clases utilizando la notación Camell, comenzando o no con la letra T para indicar que es un tipo de datos. • Colocar la apertura de ambiente en la misma línea o en una línea aparte.
  • 14. Implementación // Sintaxis en C++ class <nombre de la clase> { private: [lista de miembros] protected: [lista de miembros] public: [lista de miembros] };
  • 15. Conceptos básicos Cada clase puede estar compuesta por: • Atributos: definen el estado de la clase. • atributos pasivos, • variables miembros, • campos. • Métodos: definen el comportamiento de la clase. • funciones miembros, • atributos activos, • operaciones, • comportamiento, • responsabilidades.
  • 16. Notación UML para Ejemplos: representar una clase Florista Nombre Variables Miembros Salario Edad Funciones miembros Vender flores Enviar flores a otra ciudad Bombillo Consumo Variables Miembros Enceder Apagar Funciones miembros Aumentar Brillo Disminuir brillo
  • 17. Atributos o variables miembros Los atributos son características, propiedades que hacen que un objeto se diferencie del otro. Pueden determinar apariencia, cualidades, estado, etc. Los atributos se definen por variables. Para cada variable se define su tipo. En C++ es posible definir: • Variables o atributos de clase • Variables o atributos de objeto o de instancia
  • 19. Variables de clases • Define un atributo para toda la clase. • Aplica para la clase y para todas sus instancias. • Sólo almacena una copia con independencia de la cantidad de objetos. • Existe aunque no se haya creado ningún objeto de la clase. • Debe ser definida como static.
  • 20. Variables de objetos o de instancia • Define un atributo de un objeto en particular. • Cada instancia u objeto almacena su propia copia de variables de objeto. • Los atributos son por defecto de objetos o de instancia a menos que se califiquen como static (de clase).
  • 21. Ejemplos // en C++ class Circulo { static int numCirculos = 0; double x, y, r; }; Las variables de clases son buenas para la comunicación entre diferentes objetos de la clase o para llevar un registro de información relativa a toda la clase. Ejemplo: el número total de círculos creados.
  • 22. Ejemplos // en C++ class Fecha { int d; int m; int a; static TDate defaultDate; }; Buenas prácticas Definir cada atributo en una línea independiente aunque sean del mismo tipo. Hace el código más legible y permite comentar mejor.
  • 23. Métodos o funciones miembros El comportamiento de una clase se implementa a través de sus métodos o funciones miembros. Una clase o un objeto puede llamar métodos de otras clases para: • Indicar a otro objeto que cambie • Pedir a otro objeto que haga algo Es posible definir: • Métodos de instancia: aplican a cada objeto de la clase.
  • 24. Métodos de clase • Están disponibles para cualquier instancia de la clase y para otras clases. • No se requiere una instancia de la clase para poder invocar a un método de clase. • Para definir los métodos de clase hay que anteponer a la definición del método la cláusula static.
  • 25. Tipos de funciones miembros • Funciones (procedimientos) • Constructores • Destructores En C++ todas son funciones, no existen procedimientos.
  • 26. Definiendo métodos • Cada objeto puede satisfacer sólo ciertos requerimientos. • Los requerimientos que puede resolver el objeto están definidos por su interfaz y los tipos que hay en ella. • Cuando se hace un requerimiento a un objeto un método es llamado.
  • 27. Definiendo métodos La definición básica de un método cuenta de: • Tipo de retorno (tipo de objeto o tipo primitivo) • Nombre del método • Lista de parámetros • Cuerpo del método Las tres primeras partes se conocen como interfaz o firma del método.
  • 28. Definiendo clases En C++: • es posible definir variables y funciones que no pertenezcan a una clase. • las clases se declaran en un fichero <nombre>.h y se implementan sus métodos en un fichero <nombre>.cpp a menos que la función sea inline.
  • 29. Ejemplo en C++ // en C++, fichero.h // en C++, fichero.h class Date { class Date { int d; int d; public: public: //por defecto es inline int D(); int D(){return d;} }; }; //En fichero.cpp inline int Date::D() { return d; } //otra variante int Date::D() { return d; }
  • 30. Constructor Es un tipo especial de método utilizado para crear objetos o instancias de una clase. Características • Su nombre coincide con el de la clase. • No tiene valor de retorno (ni void) • Una clase puede tener varios constructores (ejemplo típico de sobrecarga de funciones), pero la lista de parámetros tiene que variar. • Los constructores deben diferir en tipo y/o cantidad de parámetro.
  • 31. Constructor Características • Si la clase tiene un constructor, todos los objetos de la clase deben ser inicializados invocándolo. • Si el constructor tiene parámetros al invocarlo hay que suministrarlos. • De no definirse un constructor para la clase, el compilador genera un constructor por defecto. • El constructor por defecto, no tiene parámetros e inicializa cada atributo con el valor nulo por defecto. • Si un constructor no tiene parámetros se considera el constructor por defecto.
  • 32. Constructores en C++ • Existe un tipo especial de constructor llamado constructor copia, cuyo parámetro es una referencia a una instancia de la clase. • El constructor copia debe copiar cada miembro de la clase. • No hay constructores virtuales ya que al construir se debe conocer el tipo exacto del objeto.
  • 33. Encapsulamiento Es una de las propiedades de la POO que define que el objeto debe ser una cápsula o caja negra que encapsula su funcionamiento y estructura interna. Sólo se ven desde afuera los miembros (la interfaz para el caso de los métodos) con visibilidad pública. Buenas Prácticas: los atributos deben ser privados o protegidos y se debe acceder a ellos a través de los métodos que pueden ser públicos.
  • 34. Encapsulamiento INTERFAZ de la CLASE CLASE CLASE Datos y Funciones Miembros Privadas, Protegidas y de Paquete Atributos Públicos Métodos Públicos instancia1 instancia2
  • 35. Encapsulamiento El encapsulamiento permite: • Ocultar detalles de implementación. • Simplificar el programa. • Minimizar el impacto del cambio. • Garantizar integridad de los datos.
  • 36. Alcance de variables En C++, existen variables: •Globales •Locales •Variables de instancia •Variables de clase
  • 37. Alcance de variables En C++, las clases tienen su propio ámbito. int a = 1; // variable global class TClase { int a; public: TClase(int); }; TClase clase(5); TClase.a; // error, trata de encontrala en el // ámbito de TClase y es privada.