la finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que...

18
Programación Orientada a Objetos

Upload: sofia-flores-juarez

Post on 25-Jan-2016

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Programación Orientada a Objetos

Page 2: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Introducción e Historia

La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso.

Esta definición da que pensar: no parecen muy listos los ordenadores. Debido a esto es muy frecuente la expresión Los ordenadores son tontos.

Desgraciadamente, el ordenador y las personas hablan idiomas diferentes: el ordenador entiende unas determinadas secuencias de ceros y unos, llamado

lenguaje o código máquina. El programador debe darle instrucciones en ese formato

Además ese código máquina no es el mismo para todos los ordenadores lo que se traduce en que los programas realizados para un tipo de máquina no sirven para el

resto.

Page 3: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

ALGORITMO

Es el conjunto de pasos necesarios para resolver un problema. El algoritmo es por tanto la "receta" que señala qué se debe hacer en cada momento y bajo que condiciones hacerlo

PROGRAMA

Conjunto ordenado de instrucciones expresadas en un lenguaje de programación que implementan un algoritmo.

LENGUAJE DE PROGRAMACIÓN

Al igual que un lenguaje natural, estaría constituido por:

• Un conjunto de símbolos: letras, símbolos de puntuación, etc. Léxico del lenguaje.• Una serie de normas para la correcta combinación del anterior conjunto. Gramática

y semántica del lenguaje.

Combinando correctamente los símbolos será capaz de crear programas

Page 4: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Breve HistoriaEn la historia de los lenguajes de programación podemos destacar también el hecho de que se han derivado varios tipos de lenguajes a partir de los primeros:

• 1843: Ada Lovelace desarrolla el primer lenguaje de programación cuando escribió un algoritmo para la máquina analítica de Charles Babbage.

• 1957 – Fortran: (“The IBM Mathematical Formula Translating System”): Un lenguaje de programación de alto nivel de propósito general. Para cálculo numérico y científico (como alternativa al lenguaje ensamblador). Es el lenguaje de programación más antiguo que se utiliza hoy en día.

• 1958 – Lisp: (“List Processor”) Utilizado para la notación matemática y temas de ciencias de la computación.

• 1959 – Cobol: (“Common Business-Oriented Language) Usado principalmente para la informática empresarial. Es el primer lenguaje de programación que se demandan por el Departamento de Defensa de EE.UU..

• 1964 – BASIC: (“Beginner’s All-purpose Symbolic Instruction Code”) Diseñado para la simplicidad. Su popularidad explotó a mediados de los años 70 con los computadores personales.

• 1970 – Pascal: (En honor al matemático/físico francés Blaise Pascal) Utilizado para la enseñanza de la programación estructurada y estructuración de datos.

Page 5: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

• 1972 – Lenguaje C: (Basado en un lenguaje anterior llamado “B”) Creado para sistemas Unix. Muchos de lenguajes de programación más populares del mundo son derivados de el, entre ellos tenemos C#, Java, JavaScript, Perl, PHP y Python.

• 1980 – Ada: (En honor a Ada Lovelace): Es derivado del Pascal. Contratado por el Departamento de Defensa de los EE.UU. en 1977 para el desarrollo de sistemas de software grandes.

• 1983 – C++: (“C con clases”; ++ es el operador de incremento en “C”) Es una extensión de lenguaje C, con mejoras tales como clases, funciones virtuales y plantillas.

• 1983 – Objective-C: (Extensión de “C” orientada a objetos) Ampliación de C, se adiciona la funcionalidad de paso de mensajes basado en el lenguaje Smalltalk.

• 1987 – Perl: Creado para el procesamiento de informes en sistemas Unix. Hoy en día es conocido por su gran potencia y versatilidad.

• 1991 – Python: Creado para apoyar una variedad de estilos de programación y hacerlo divertido de usar.

• 1993 – Ruby: Una lenguaje influenciado por Perl, Ada, Lisp, Smalltalk, etc. Diseñado para la programación productiva y agradable.

• 1995 – Java: Hecho para un proyecto de televisión interactiva. Funciona multiplataforma. Es el segundo lenguaje más popular (detrás de lenguaje C).

• 1995 – PHP: (“Personal Home Page”) Usado para la creación de páginas web dinámicas.

• 1995 – JavaScript: Creado para ampliar la funcionalidad de las páginas web, permite utilizar formularios de presentación/validación, interactividad, animaciones, seguimiento de la actividad del usuario, etc

Page 6: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Clasificación

Clasificaciones de los lenguajes de programación en función de diferentes criterios:

Según su proximidad al lenguaje máquina:

Lenguajes de bajo nivel: Son distintos para cada procesador: cada tipo de ordenador posee el suyo. Controlan directamente los recursos hardware de la máquina. Como ejemplos tenemos el lenguaje máquina o el lenguaje ensamblador (Assembly).

Lenguajes de medio nivel: Tal y como refleja su nombre este grupo alberga aquellos lenguajes que tienen algunas características de los de bajo nivel y otras de los de alto nivel. El ejemplo más representativo es el lenguaje C.

Lenguajes de alto nivel: Son independientes del procesador. Son más sencillos y legibles pero generan un código mucho menos eficiente (velocidad y tamaño) que los de bajo nivel. Para poder ser ejecutados necesitan un procesador que bien trata una vez el código y genera un programa ejecutable por un procesador (compiladores) o bien lo interpretan línea por línea cada vez que son ejecutados (intérpretes). Ejemplos: Pascal, php, Java, etc.

Page 7: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Según el propósito del lenguaje:

Lenguajes de propósito general: como el Pascal, el C o incluso el Java aunque este último se relaciona mucho con las aplicaciones empresariales.

Lenguajes de propósito específico: php orientado al desarrollo de aplicaciones Web, LISP orientado a la inteligencia artificial, etc.

Según su orientación:

Lenguajes orientados al procedimiento: son lenguajes imperativos como Pascal en los que se describen los pasos que han de darse para resolver un determinado problema. Se explica como resolver un problema.

Lenguajes orientados al problema: como por ejemplo Prolog. En estos lenguajes lo que se describe es el problema en sí; son de tipo declarativo.

Lenguajes orientados a objeto: son lenguajes en los que se modela la realidad centrándose en la elementos que la componen.

Page 8: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Entornos de programación

Un entorno de programación es un programa o conjunto de programas que engloban todas las tareas necesarias para el desarrollo de un programa o aplicación. Estas tareas son básicamente las siguientes:

• Edición del programa. • Compilación y enlazado. • Ejecución. • Depuración.

Editor del programa

El primer elemento necesario para el desarrollo de un programa es un editor de texto. Un editor es un programa que nos permite escribir (editar) las instrucciones del programa y posteriormente guardar el programa en un fichero en un soporte de almacenamiento.

Page 9: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Compilador

Es un programa cuyo cometido es realizar la conversión de un programa escrito en un lenguaje de programación a su correspondiente equivalente en lenguaje máquina. El resultado que devuelve un compilador es un programa que ya puede ser ejecutado por el ordenador destino sin la necesidad de que el compilador esté presente. Por ejemplo, el lenguaje Pascal o el lenguaje C son lenguajes de programación que necesitan ser compilados. Cuando la conversión se realiza entre el lenguaje ensamblador (Assembly) y el código máquina, el compilador recibe el nombre específico de Ensamblador (Assembler).

Enlazadores

Por simplificación y para facilitar la comprensión de los conceptos anteriores se ha señalado que los compiladores y los ensambladores (caso particular de compilador) generan código máquina que puede ser ejecutado por el ordenador. Sin embargo esto no es totalmente cierto ya que hay una etapa de enlazado que debe ser realizada por otro programa denominado enlazador (linker).

Depuradores

Los depuradores (debuggers) son capaces de ejecutar el programa paso a paso incluyendo además un conjunto de facilidades que permiten observar el valor de las variables y estructuras de datos permitiendo así una mejor localización de errores no evidentes

Page 10: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Programación OO.

Define una serie de conceptos y técnicas de programación para representar

acciones o cosas de la vida real basada en objetos, a diferencia de otras formas de

programación como por ejemplo la estructurada, con la POO trabajamos de manera

distinta vinculando diferentes conceptos tales como clases, objetos, métodos,

propiedades, estados, herencia, encapsulación entre otros, generando cada vez

interrelaciones en nuestro desarrollo en pro del funcionamiento del sistema

principal, definiendo el programa como un conjunto de estos objetos relacionados

entre si.

Page 11: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Conceptos

Clases

Las clases son uno de los principales componentes de un lenguaje de programación, pues en ellas ocurren todos los procesos lógicos requeridos para un sistema, en si podemos definirlas como estructuras que representan objetos del mundo real, tomando como objetos a personas, lugares o cosas, en general las clases poseen propiedades, comportamientos y relaciones con otras clases del sistema

Nombre : Contiene el Nombre de la Clase.Atributos : Representan las propiedades que caracterizan la clase.Métodos : Representan el comportamiento u operaciones, la forma como interactúa la clase con su entorno.

Page 12: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Objetos

Los objetos representan una entidad concreta o abstracta del mundo real, en programación básicamente se le conoce como la instancia de una clase en si es lo que da el sentido a estas.

Al igual que las clases se componen de tres partes fundamentales:

Estado: Representa los atributos o características con valores concretos del objeto.Comportamiento : Se define por los métodos u operaciones que se pueden realizar con el. Identidad : Es la propiedad única que representa al objeto y lo diferencia del resto.

En la imagen, los moldes representan las clases, mientras que las galletas obtenidas de estos moldes representan los objetos instancias de estas clases, por ejemplo atributos del objeto galleta podría ser sabor, color, tamaño etc.

Page 13: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Atributo

Son los datos o variables que caracterizan al objeto y cuyos valores en un momento dado indican su estado.Un atributo es una característica de un objeto. Mediante los atributos se define información oculta dentro de un objeto, la cual es manipulada solamente por los métodos definidos sobre dicho objetoUn atributo consta de un nombre y un valor. Cada atributo está asociado a un tipo de dato, que puede ser simple (entero, real, lógico, carácter, string) o estructurado (arreglo, registro, archivo, lista, etc.)

Los modos de acceso son:

Público: Atributos (o Métodos) que son accesibles fuera de la clase. Pueden ser llamados por cualquier clase, aun si no está relacionada con ella. Este modo de acceso también se puede representar con el símbolo +.

Privado: Atributos (o Métodos) que sólo son accesibles dentro de la implementación de la clase. También se puede representar con el símbolo –.

Protegido: Atributos (o Métodos) que son accesibles para la propia clase y sus clases hijas (subclases). También se puede representar con el símbolo #.

Page 14: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Método

Son las operaciones (acciones o funciones) que se aplican sobre los objetos y que permiten crearlos, cambiar su estado o consultar el valor de sus atributos.

Los métodos constituyen la secuencia de acciones que implementan las operaciones sobre los objetos. La implementación de los métodos no es visible fuera de objeto.

Page 15: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

El Enfoque Orientado a Objeto

Se basa en cuatro principios que constituyen la base de todo desarrollo orientado a objetos.

Estos principios son: la Abstracción, el Encapsulamiento, la Modularidad y la Herencia.

Page 16: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

La abstracción permite resaltar la parte mas representativa de algo, ignorando detalles para centrarse en lo principal. 

La imagen es muy fácil de identificar, con base a ella podemos crear una clase persona, o la

clase hombre, humano entre otras, pero obviamente vemos que la imagen no tiene elementos como ojos, nariz, boca, rostro en general, ni dedos, pies, manos o cuello....... pero entonces porque decimos que es una persona?.........Precisamente aquí estamos aplicando el concepto de abstracción, ya que nos fijamos en lo mas representativo de algo, en este caso vemos que se tiene una cabeza, tronco, brazos y pies, con esto es suficiente para saber que es una persona sin fijarnos en los detalles mencionados anteriormente.

Las clases abstractas permiten crear métodos generales con un comportamiento común para otras clases concretas sin importar sus características ni el comportamiento que usen para dichos métodos.

Abstracción

Page 17: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Modularidad

Es la propiedad que permite tener independencia entre las diferentes partes de un sistema. La modularidad consiste en dividir un programa en módulos o partes, que pueden ser compilados separadamente, pero que tienen conexiones con otros módulos. En un mismo módulo se suele colocar clases y objetos que guarden una estrecha relación. El sentido de modularidad está muy relacionado con el ocultamiento de información

Herencia.

La herencia en java representa lo que conocemos de herencia en el mundo real, básicamente mediante esta obtenemos las características o rasgos comunes de nuestros padres o abuelos, en java es el mismo enfoque permitiendo la creación de nuevas clases basadas en clases ya existentes, con las cuales podemos obtener las características de las clases padres, heredando campos, atributos, métodos o funcionalidades.

Page 18: La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen

Encapsulamiento. 

Este concepto es uno de los mas importantes en términos de seguridad dentro de nuestra aplicación, la encapsulación es la forma de proteger nuestros datos dentro del sistema, estableciendo básicamente los permisos o niveles de visibilidad o acceso de nuestros datos.

Se representa por 3 niveles :

Público: Se puede acceder a todos los atributos o métodos de la clase.Protegido: Se puede acceder a los atributos o métodos solo en la misma jerarquía de herencia. Privado: Solo se puede acceder a los atributos o métodos de la clase en la que se encuentran.