Sei sulla pagina 1di 53

Facultad de Ciencias

Carrera Profesional de Matemática Aplicada

Paradigma de Programación

Es interesante destacar, que en los últimos años se ha evidenciado un acercamiento entre dos comunidades de ingeniería de
software aparentemente muy distintas: la “comunidad de los métodos formales” y la “comunidad de los métodos
convencionales”.
Paradigma de Programación

Un paradigma de programación es una propuesta tecnológica


adoptada por una comunidad de programadores y desarrolladores
cuyo núcleo central es incuestionable en cuanto que únicamente trata
de resolver uno o varios problemas claramente delimitados; la
resolución de estos problemas debe suponer consecuentemente un
avance significativo en al menos un parámetro que afecte a la
ingeniería de software.
Un paradigma de programación representa un enfoque particular o
filosofía para diseñar soluciones. Los paradigmas difieren unos de
otros, en los conceptos y la forma de abstraer los elementos
involucrados en un problema, así como en los pasos que integran su
solución del problema, en otras palabras, el cómputo.
Lenguaje de Programación

Un lenguaje de programación es un lenguaje formal diseñado para


realizar procesos que pueden ser llevados a cabo por máquinas como
las computadoras.

Pueden usarse para crear programas que controlen el


comportamiento físico y lógico de una máquina, para expresar
algoritmos con precisión, o como modo de comunicación humana.

Está formado por un conjunto de símbolos y reglas sintácticas y


semánticas que definen su estructura y el significado de sus
elementos y expresiones. Al proceso por el cual se escribe, se prueba,
se depura, se compila (de ser necesario) y se mantiene el
código fuente de un programa informático se le llama programación.
Lenguaje de Programación

Un lenguaje de programación es un idioma artificial diseñado


para expresar procesos que pueden ser llevadas a cabo por
máquinas como las computadoras.

Está formado por un conjunto de símbolos y reglas sintácticas y


semánticas que definen su estructura y el significado de sus
elementos y expresiones.

Al proceso por el cual se escribe, se prueba, se depura, se


compila y se mantiene el código fuente de un programa
informático se le llama programación.
Tipos de lenguaje de programación

Los Lenguajes de Programación de Bajo Nivel: Utilizados


fundamentalmente para controlar el “hardware”, dependen totalmente
de la máquina y no se pueden utilizar en otras tecnologías. Estos
lenguajes son los que ordenan al hardware operaciones fundamentales
para que pueda funcionar.
Estos lenguajes también se llaman de código máquina. Son los más
complicados.
Tipos de lenguaje de programación

Los Lenguajes de Programación de Alto Nivel: Estos lenguajes


son más parecidos al lenguaje natural humano y no dependen de la
máquina y sirven fundamentalmente para crear programas
informáticos que solucionan diferentes problemas. Son los más
usados por los programadores y por todo del mundo que realiza
programas informáticos.
Lenguaje de programación orientado a objetos

• Entre los lenguajes orientados a objetos destacan los siguientes:


• Action Script , Ada, C++, C#, Clarion, C++Builder, D, Delphi, Harbour, Eiffel, Java,
Lexico (en castellano), Objective-C, Ocaml, Oz, Perl (soporta herencia múltiple),
PHP (en su versión 5) , PowerBuilder, Python, Ruby, Smalltalk, Magik
(SmallWorld), VB.NET Visual FoxPro , XBase++
Evolución
Tipo de datos
Tipo de datos
Enfoques generales para la escritura del código

Programación “espagueti”. Sin una secuencia de ejecución


definida. Sin módulos.

Programación estructurada. Se usan los módulos (basados en


procedimientos) y las sentencias de programación estructuradas.

Programación Orientada a Objetos. Se afina el concepto de


módulo al incluir datos y procedimientos (en una “clase”). Incluye
nuevos conceptos como herencia, polimorfismo, etc.
Algoritmo

Un algoritmo es un método para resolver un problema.

Algoritmo proviene de Mohammed al-Khowârizmi, matemático


persa que vivió durante el siglo IX y alcanzó gran reputación por el
enunciado de las reglas paso a paso para sumar, restar, multiplicar
y dividir números decimales; la traducción al latín del apellido
en la palabra algorismus derivó posteriormente en algoritmo.
Algoritmo de Euclides
Características de un Algoritmo

• Un algoritmo debe ser preciso e indicar el orden de realización de


cada paso.
• Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces,
se debe obtener el mismo resultado cada vez.
• Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe
terminar en algún momento; o sea, debe tener un número finito de
pasos.

La definición de un algoritmo debe describir tres partes:


Entrada, Proceso y Salida.
Ejemplo de un Algoritmo

Un número es primo si sólo puede dividirse por sí mismo y por la unidad (es decir, no
tiene más divisores que él mismo y la unidad). Por ejemplo, 9, 8, 6, 4, 12, 16, 20, etc., no
son primos, ya que son divisibles por números distintos a ellos mismos y a la unidad. Así,
9 es divisible por 3, 8 lo es por 2, etc.
El algoritmo de resolución del problema pasa por dividir sucesivamente el número por 2,
3, 4, etc.

1. Inicio.
2. Poner X igual a 2 (x = 2, x variable que representa a los divisores del número que se busca N).
3. Dividir N por X (N/X).
4. Si el resultado de N/X es entero, entonces N es un número primo y bifurcar al punto 7; en caso contrario, continuar el proceso.
5. Suma 1 a X (X ←X + 1).
6. Si X es igual a N, entonces N es un número primo; en caso contrario, bifurcar al punto 3.
7. Fin.

Por ejemplo, si
N es 131, los pasos anteriores serían:
1. Inicio.
2. X = 2.
3 y 4. 131/X. Como el resultado no es entero, se continúa el proceso.
5. X ←2 + 1, luego X = 3.
6. Como X no es 131, se bifurca al punto 3.
3 y 4. 131/X resultado no es entero.
5. X ←3 + 1, X = 4.
6. Como X no es 131 bifurca al punto 3.
3 y 4.131/X..., etc.
7. Fin.
POO

• Toma las mejores ideas de la programación estructurada la combina con


nuevos y poderosos conceptos que animan o alientan una nueva visión
de la tarea de la programación, permite descomponer fácilmente un
problema en subgrupos de partes relacionadas, entonces, puede
traducir estos subgrupos en unidades autocontenidas llamadas Objetos

• Es un paradigma de programación que usa objetos y sus interacciones


para diseñar aplicaciones y programas de computadora.

• Está basado en varias técnicas, incluyendo herencia, modularidad,


polimorfismo y encapsulamiento.

• Su uso se popularizó a principios de la década de 1990.


Programación Orientada a Objetos

Un objeto se define como una estructura que encapsula atributos


(características) y comportamientos (procedimientos) de una entidad con
un papel bien definido en una aplicación. Cada objeto tiene:
 Estado: Conjunto de valores de los atributos en un instante de tiempo
dado. El comportamiento de un objeto puede modificar el estado de este.
 Comportamiento: Relacionado con su funcionalidad y determina las
operaciones que este puede realizar o a las que puede responder ante
mensajes enviados por otros objetos.
 Identidad: Es la propiedad que permite a un objeto diferenciarse de
otros. Generalmente esta propiedad es tal, que da nombre al objeto.
 Clases: Es la definición de un objeto. Cuando se programa un objeto y se
definen sus características y funcionalidades, realmente se programa
una clase
Elementos primordiales en el modelo POO.

• La programación Orientada a Objetos trata de cumplir las


necesidades de los usuarios finales, estás tareas se realizan
mediante la modelización del mundo real, el soporte
fundamental es el modelo objeto.
• Los elementos más importantes de este modelo son:
• Abstracción
• Encapsulamiento
• Modularidad
• Jerarquía y Herencia
• Polimorfismo
Abstracción.

• Extraer las propiedades esenciales de un objeto que lo distinguen de los


demás tipos de Objetos y proporciona fronteras conceptuales definidas
respecto al punto de vista del observador

• Denota las características esenciales de un objeto, donde se capturan sus


comportamientos.

• Es la capacidad para encapsular y aislar la información de diseño y


ejecución

• Una abstracción se centra en la vista externa de un objeto, de modo que


sirva para separar el comportamiento esencial de un objeto de su
implementación. Definir una abstracción significa describir una entidad del
mundo real, no importa lo compleja que pueda ser y, a continuación,
utilizar esta descripción en un programa.
Abstracción.

• El modelo define una perspectiva abstracta


del problema
• Los datos que son afectados
• Las operaciones que se aplican sobre los datos
Abstracción, ejemplo.

• Para la administración docente, las entidades


que participan son:

Alumnos Profesores

Administr. Docente

Salas
Asignaturas
Encapsulamiento.

• Significa reunir a todos los elementos que pueden considerarse


pertenecientes a una misma entidad, al mismo nivel de abstracción.

• Los lenguajes orientados a objetos proporcionan la Encapsulación. La


encapsulación se puede utilizar para aplicar el concepto de Abstracción.

• Cada objeto está aislado del exterior, es un módulo natural, y la


aplicación entera se reduce a un agregado o rompecabezas de objetos.
El aislamiento protege a los datos asociados a un objeto contra su
modificación por quien no tenga derecho a acceder a ellos, eliminando
efectos secundarios e interacciones.
Encapsulamiento, ejemplo.

Atributos de una Cuenta Corriente:


 Número
¿Cómo se almacenan estos datos?
 Saldo

Métodos:
 Depositar
 Girar
 Conocer el saldo
Jerarquía y herencia.

 Herencia: (por ejemplo, la clase D recibe herencia de la clase C) Es la


facilidad mediante la cual la clase D hereda en ella cada uno de los atributos
y operaciones de C, como si esos atributos y operaciones hubiesen sido
definidos por la misma D.

 La Jerarquía es una propiedad que permite la ordenación de las


abstracciones. Las dos jerarquías más importantes de un sistema complejo
son: estructura de clases (jerarquía “es-un” (is-a):
generalización/especialización) y estructura de objetos (jerarquía “parte-de”
(part-of): agregación).

 Las jerarquías de generalización/especialización se conocen como herencia.


Básicamente, la herencia define una relación entre clases, en donde una
clase comparte la estructura o comportamiento definido en una o más clases
(herencia simple y herencia múltiple, respectivamente).
Jerarquía y herencia.

• Jerarquía de clases. Las relaciones de herencia


forman una estructura de árbol (jerarquía).
Ejemplo:
Polimorfismo

• Comportamientos diferentes, asociados a objetos distintos, pueden


compartir el mismo nombre, al llamarlos por ese nombre se utilizará el
comportamiento correspondiente al objeto que se esté usando.

• Es la posibilidad de que una entidad tome muchas formas. En términos


prácticos, el polimorfismo permite referirse a objetos de clases diferentes
mediante el mismo elemento de programa y realizar la misma operación de
diferentes formas, según sea el objeto que se referencia en ese momento.

• El polimorfismo adquiere su máxima expresión en la derivación o extensión


de clases, es decir, cuando se obtiene una clase a partir de una clase ya
existente, mediante la propiedad de derivación de clases o herencia.
Polimorfismo

• Capacidad que permite a dos clases


diferentes responder de forma distinta a un
mismo mensaje

• Esto significa que dos clases que tengan un


método con el mismo nombre y que respondan
al mismo tipo de mensaje (es decir, que
reciban los mismo parámetros), ejecutarán
acciones distintas
Objetos

 En la POO se dice que un objeto: "integra datos y


algoritmos"

 En la programación estructurada, variables y funciones


están separadas

POO Procedural

Clase Tipo
Objeto Variable
Instanciación de objetos Declaración de variables
Objetos

 Cada objeto es responsable de inicializarse y


destruirse en forma correcta

 Un objeto consta de: Atributos

 Tiempo de vida Métodos

 Estado
 Comportamiento
Tiempo de vida de un objeto
 La duración de un objeto en un programa siempre
está limitada en el tiempo.

 La mayoría de los objetos sólo existen durante una


parte de la ejecución del programa.

 Los objetos son creados mediante un mecanismo


denominado instanciación.

 Los objetos dejan de existir cuando son destruidos


Estado de un objeto

Queda definido por sus atributos

Con él se definen las propiedades del objeto,


y el estado en que se encuentra en un momento
determinado de su existencia
Comportamiento de un objeto

 Queda definido por los métodos

 Los prototipos de los métodos definidos en la


interfaz de una clase permiten a otros objetos,
que forman parte de la aplicación, interactuar
con los objetos de esa clase
Clases

• Las clases son abstracciones que representan a un conjunto


de objetos con un:
 Comportamiento e
 Interfaz común

• Es la implementación de un tipo de dato (considerando los


objetos como instancias de las clases)
Clases

 Permiten definir y representar colecciones de


objetos

 Proveen un modelo para la creación de objetos

 Los elementos que componen la clase son


Atributos Representan el estado de un objeto
(variables de ejemplar)

Métodos Representan el comportamiento de un


objeto (funciones miembro)
Ejemplo de instancia de objetos

• Clase: Cuenta corriente


• Atributos:
• Número
• Nombre
• Saldo
• Métodos:
• Depositar
• Girar
• Consultar saldo
Ejemplo de instancia de objetos

• Clase: Cuenta corriente

• Instanciación: Cuenta Corriente A, B


Objeto: A Objeto: B
Num: 1234 Num: 9876
Nombre: Juan Nombre: María
Saldo: 350.000 Saldo: 450.600

Métodos Métodos

Depositar Depositar

Girar Girar

Consultar Consultar
Mensaje

• Mecanismo por el cual se solicita una acción sobre el objeto.

• Un programa en ejecución es una colección de objetos que se


crean, interactúan y se destruyen

• La interacción se basa en mensajes que son enviados de un


objeto a otro, de modo que el emisor le pide al receptor la
ejecución de un método.
Mensajes

Un objeto invoca un método como una reacción al recibir un


mensaje

La interpretación del mensaje dependerá del receptor

Paciente Médico

Mensaje
Recepcionista

Paciente Médico
Métodos

 Un método es una función miembro de una clase

 Establece el comportamiento del objeto

 Opera directamente sobre el objeto que lo invocó

 Recibe, como parámetro implícito, el objeto


que lo invocó
Métodos

• Si el método requiere otros objetos de la clase, éstos


deberán ser pasados como parámetros explícitos y el
método sólo podrá acceder en forma indirecta a estos
objetos

• Ejemplos:
 Depositar
 Girar
 Consultar
Tipos de Métodos

• Constructores
• Destructores
• Modificadores
• Selectores
• Iteradores
Constructor

• El constructor es un proceso que se encarga de:


• Reservar espacio de memoria para los datos del objeto
• Inicializar los atributos del objeto (darle un estado
inicial)
• Tipos de Constructor:
• Oficio, Copia, con Parámetros
Constructor de oficio

• Inicializa los atributos con valores definidos por el


implementador de la clase.
Ej.
Fecha::Fecha()
{
d=1; m=1; a=2001;
}
Constructor de copia

• Inicializa los atributos del objeto con los datos


provenientes de otro objeto de la misma clase.
Ej.
Fecha::Fecha(const Fecha &f2)
{
d=f2.d;
m=f2.m;
a=f2.a;
}
Constructor con parámetros

• Inicializa el objeto con datos provenientes de los


parámetros.
Ej.
Fecha::Fecha(byte dd, byte mm, int aa)
{
SetFecha(dd, mm, aa);
}
Destructor

• Liberar la memoria reservada para los datos del


objeto.
• La mayoría de los lenguajes lo tiene implementado
por default por lo que solo se lo implementa
cuando el objeto reserva memoria en tiempo de
ejecución.
Modificador

• Permite cambiar el estado de un objeto,


modificando los atributos del mismo.
Ej.
Void Fecha::SetDia(byte dd)
{
SetFecha(dd, m, a);
}
Selector

• Permite devolver el valor de los atributos sin alterar


su estado.
Ej.
byte Fecha::GetDia()
{
return d;
}
Identidad

• Es la propiedad de un objeto que lo distingue de todos los demás objetos


• No hay que confundir el nombre de un objeto con el objeto mismo.
Ej. piolin != &piolin;
• Puede haber varias variables que se refieran al mismo objeto, pero no varios objetos
con la misma identidad.
Ej. Canario *pointer = &piolin;
• Puede haber objetos con el mismo estado pero identidades diferentes.
Ej. Canario cantarin = piolin;
• Conclusión: hay dos tipos de igualdad: de estado y de identidad.
Métodos – Ejemplo1-2

Representación gráfica de los métodos de las


clases CQuebrado y CVector

CQuebrado CVector

PonNumerador PonDimension
PonDenominador PonElemento
ObtDenominador ObtDimension
ObtNumerador ObtElemento
Simplificar Ordenar
Otros métodos

• Además de los métodos básicos, las clases pueden


proveer de otros métodos para un mejor
aprovechamiento.
• Estos otros métodos no tienen nombres especiales
(constructor, selector, etc), son simplemente
métodos.

51
Beneficios del modelo de objetos y de la POO sobre otros
paradigmas.

• La LPOO permite crear TDA (tipos de datos


abstractos). Es decir nuevos tipos de datos que no
están predefinidos en el LP pero son necesarios
para el usuario.
• Los LPOO proporcionan un rico conjunto de clases
predefinidas que se pueden usar en las
aplicaciones.
• Reutilización. Las clases se construyen a partir de
otras clases.
Beneficios del modelo de objetos y de la POO sobre otros
paradigmas.

• Fiabilidad.
• Productividad del desarrollador.
• Calidad.
• Mantenimiento.
• Costo.
• Escalabilidad.
• Adaptabilidad (mejor independencia e
interoperabilidad).

Potrebbero piacerti anche