Download Programación Orientada a Objetos - Materias de UES-FMO

Document related concepts

Polimorfismo (informática) wikipedia , lookup

Scala (lenguaje de programación) wikipedia , lookup

C Sharp wikipedia , lookup

Ocaml wikipedia , lookup

Objeto inmutable wikipedia , lookup

Transcript
Introducción a la
Programación
Programación I
¿Qué es Programación?
• Un proceso por el cual se escribe (en
un lenguaje de programación), se
prueba, se depura y se mantiene el
código fuente de un programa
informático.
¿Qué es Programación?
• Para construir programas, las
personas usan lenguajes que son
similar al idioma humano. Los
resultados se traducen en código de
máquina que las computadoras
entienden.
Lenguaje de Programación
• Es un conjunto de símbolos y reglas
sintácticas y semánticas que definen
su estructura y el significado de sus
elementos y expresiones. Es utilizado
para controlar el comportamiento
físico y lógico de una máquina.
La Evolución de los lenguajes de la
Programación
• Los lenguajes de programación entran en tres
categorías extensas:
 Lenguajes de máquina
 Lenguajes de ensamblado
 Lenguajes altos o de nivel
.
La Evolución de los lenguajes de Programación:
Lenguaje de Máquina
•
Lenguaje de máquina (idiomas de la primerageneración) es el tipo más básico de lenguaje de la
computadora y consiste en series de números del
hardware de la computadora .
•
Los Tipos diferentes de uso en el hardware en el
código de la máquina son diferentes. Por ejemplo,
las computadoras de IBM usan lenguaje de máquina
diferente que las computadoras de las Apple.
La Evolución de los lenguajes de la
Programación: Lenguaje de ensamblado
•
Lenguaje de ensamblado (idiomas de la segundageneración) es sólo algo más fácil que trabajar con
el lenguaje de máquina.
•
Para crear programas en lenguaje de ensamblado,
diseñadores acostumbran frases en ingles para
representar series de números.
•
El código se traduce entonces en el código del
objeto y usa a un traductor llamado ensamblador.
Código
de
ensamb
le
Ensamblad
or
Código de
Objeto
La Evolución de los lenguajes de la
Programación : Lenguajes altos o de nivel.
•
Los lenguajes de alto nivel son más poderosos que el lenguaje de ensamble y
le permiten al programador trabajar en un ambiente mas agradable.
•
Los lenguajes de la programación de alto nivel son dividido en tres "las
generaciones," cada uno más poderoso que el último:
●
Lenguaje de 3ra. Generación
●
Lenguaje de 4ta. Generación
●
Lenguaje de 5ta. Generación
La Evolución de los lenguajes de la
Programación : Lenguajes de 3a.
Generación.
• Consta de la gama de lenguajes de programación
para ámbitos computacionales donde se logra un
alto rendimiento con respecto a lenguajes de
generaciones anteriores.
• Dichos lenguajes son utilizados por especialistas,
programadores, y otros para desarrollar
programas y sistemas que requieren de un
procedimiento
especifico
para la pc.
FORTAN
C
COBOL
C++
BASIC
Java
ActiveX son :
• Los Pascal
lenguajes 3GLs siguientes
La Evolución de los lenguajes de la
Programación : Lenguajes de 4a.
Generación.
• Son lenguajes que se relacionan menos con
procedimientos y que son aun mas parecidos al
ingles que los lenguajes de tercera generación.
• Algunas características incluyen capacidades de
consulta y base de datos, de creación de códigos
y capacidades gráficas.
Ejemplos Visual C++, Visual Basic, Power
Builder, Forte, Delphi y muchos otros.
La Evolución de los lenguajes de la
Programación : Lenguajes de 5a. Generación.
• Alrededor de la mitad 1998 surgieron grupos de
herramientas de lenguajes de quinta generación,
los cuales combinan la creación de códigos
basadas en reglas, la administración de
reutilización y otros avances.
• Programación basada en conocimiento. Método
para el desarrollo de programas de computación
en el que se le ordena ala computadora realizar
un propósito en vez de instruirla para hacerlo.
Ejemplos: C#, Haskell, Modula 3.
Lenguajes Orientados a
Objetos
• Simula
• Smalltalk
• C++
• Delphi
• Java
• C#
BASIC, Visual Basic, Visual C++, C# y . NET
• BASIC, fue desarrollado a mediados de los
sesenta; su propósito principal era que los
principiantes se familiarizaran con las técnicas de
programación.
• Visual Basic, se introdujo en 1991 para simplificar
el desarrollo de aplicaciones para Windows.
BASIC, Visual Basic, Visual C++, C# y . NET
• Visual Basic .NET, ofrece una orientación
mejorada a objetos. Posee una poderosa
biblioteca que incluye componentes de software
reutilizables.
• Visual C++, es una implementación de C++.
Comparte la misma biblioteca de componentes
que VB.
BASIC, Visual Basic, Visual C++, C# y . NET
• C# fue desarrollado en Microsoft,
específicamente para la plataforma .NET como un
lenguaje que permitiera a los programadores
migrar fácilmente a .NET
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: Desarrollo Tradicional frente
al OO
Tradicional
OO
Diseño
Descendente.
Ascendente.
Lenguajes
Estructurados.
OO.
Se Centra en
Operaciones.
Los Objetos
Reales.
Idea
Clave
Descomponer
Reflejar el mundo
una Aplicación en real mediante el
programas
ensamblado de
más pequeños. Clases.
Historia: Evolución en cuanto
conceptualizacion

Programación lineal:
Cada línea de programa debe ir precedida de un identificador
(una etiqueta) para poder referenciarla, para este ejemplo
hemos utilizado números, aunque podría utilizarse
cualquier otro identificador:
1. Hacer una variable igual a 0
2. Sumar 1 a esa variable
3. Mostrar la variable
4. Si la variable es 100 -> terminar, Si_no -> saltar a 1:
Historia: Evolución en cuanto
conceptualizacion

Programación estructurada.
Hacer una variable igual a 0
Mientras que sea menor que 100 -> sumar 1 y mostrarla

Lo importante aquí, es que cuando escribimos un programa
usando las técnicas de programación estructurada, los saltos están
altamente desaconsejados, por no decir prohibidos; en cambio en
BASIC, por ejemplo, son muy frecuentes (todos conocemos el
prolífico GOTO <nLínea>), lo que no es nada conveniente si
queremos entender algo que escribimos hace tres meses de forma
rápida y clara.
Historia: Evolución en cuanto al enfoque


La evolución de los lenguajes de programación, en cuanto a
enfoque es también una evolución conceptual, pero ésta es
tan profunda que supone un cambio drástico en cuanto al
modo de concebir el tratamiento de la programación.
En este sentido, y dependiendo del autor a quien se
consulte, existen dos o tres enfoques diferentes:

Programación procedural

Programación declarativa

Programación orientada a objetos
Historia: Programación Procedural



Casi todos los lenguajes que conocemos trabajan de forma
procedural. Java, C, Pascal, BASIC, Cobol,
Fortran, APL, RPG, Clipper, etc.
En ellos, debemos establecer, hechos (datos), reglas para el
manejo de esos datos y de decisión y tenemos que decirle al
lenguaje cómo alcanzar el objetivo que se persigue. Es
decir, donde buscar la información, cómo manipularla,
cuando parar, etc.
Historia: Programación Declarativa



Los lenguajes más conocidos que existen hasta ahora, salvo
PROLOG, son todos procedurales, éste es declarativo.
En ProLog no programamos, sino que declaramos hechos,
es la maquinaria del lenguaje quien se encargará de extraer
las conclusiones que resulten inferibles de estos hechos.
A esta maquinaria se le llama motor de inferencias, que es,
por otro lado, el corazón de un Sistema Experto.
Probablemente de este tipo de programas -los más famosos
de la Inteligencia Artificial-, habrá usted oído hablar.
Historia: Programación Orientada a Objetos


La OOP es un conjunto de técnicas.
La OOP es casi 100% procedural y, desde
luego, no es en absoluto declarativa.
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. O La
jerarquía es un ordenamiento de abstracciones
-
Abstracción
<-
Encapsulamiento
<-
Abstracción y encapsulamiento son conceptos complementarios: la
abstracción enfoca la vista externa de un objeto, y el encapsulamiento
(ocultamiento de la información) previene que los clientes vean la parte
interna, donde el comportamiento de la abstracción es implementada.
Modularidad
<-
Jerarquía
Las
abstrac
ciones
forman
una
jerarquí
a
<-
¿Qué es un Objeto?
• Objeto:Un objeto es una abstracción de un
conjunto de cosas del mundo real de tal forma
que:
●
●
Todos los elementos del conjunto (las instancias)
tienen las mismas características.
Todas las instancias están sujetas a y conforman
las mismas reglas.
Mundo
Real
Softwar
e
Abstracció
¿Qué es un Objeto?
• Características de los objetos:
●
Identidad
●
Clasificación
●
Herencia
●
Polimorfismo
• Estas características pueden ser usadas en
forma independiente, pero juntas se
complementan.
Identidad
Una bicicleta roja
antena parabólica
Mi Computadora
Doris
caballo
Variable
Dirección
unCredito
unDebito
unaCuenta
unaCuentadeAhorros
10001324
54647875
87896545
87020486
Una tabla de símbolos
Residencia de Doris
cuenta bancaria
Clasificación
Vehícu
lo
Animal
Punto
Figura
(1,3)
(2,2)
(2,1)
(5,2.5)
Clases y Objetos
Class Template
Objetos
Clase
• Es la plantillas que describe a un
conjunto de objeto, con los mismos
●
atributos (variables)
●
métodos (funciones)
●
relaciones
• Un objeto es una instancia de una clase.
• Los objetos creados a partir de una
clase,
●
Tienen una estructura idéntica,
●
Pero identidad propia
Clase
• Clase --> TDA
●
Tipo de Dato Abstracto
• Es la definición de un nuevo tipo de
dato
• Un objeto es la variable de dicho tipo
• Ejemplo:
●
Clase: Perro
●
Objetos: Balto, Firulais, etc
Ejemplo de Clase
Clase Bicicleta
Atributos
Abstraídos en
Tamaño de frame
Tamaño de llanta
Material ...
Métodos
Cambio
Mover
Frenar...
Objetos bicicletas
Representación de una clase


Se utiliza el UML es un lenguaje estándar que sirve para
escribir los planos del software, puede utilizarse para
visualizar, especificar, construir y documentar todos los
artefactos que componen un sistema con gran cantidad de
software.
Diagramas de Clases: Muestran un conjunto de clases,
interfaces y colaboraciones, así como sus relaciones. Estos
diagramas son los más comunes en el modelado de sistemas
orientados a objetos y cubren la vista de diseño estática o la
vista de procesos estática (sí incluyen clases activas).
Ejemplo de Clase
Java
UML
Alumno
public class Alumno
{
private String nombre;
private String domicilio;
- nombre:: String
- domicilio: String
public Alumno(String n, String d)
{
}
public void setNombre (String n)
{
}
public String getNombre()
{
}
(n:String, d:String)
+ Alumno
+ setNombre (n:String):void
+ getNombre () :String
}
Instancia
• Una instancia es un objeto creado a
partir de una clase.
• La clase describe la estructura de la
instancia (información y
comportamiento), mientras que el
estado actual de la instancia es definido
por las operaciones ejecutadas.
Instancia
Alumno
nombre:
domicilio
:
String
: String
-+ Alumno
(n:String, d:String)
+ setNombre
(n:String):void
+ getNombre
()
:String
Creación de instancias u objetos a partir de la clase Alumno:
Alumno alumno1 = new Alumno(“Juan Perez”, “Las Peñas”);
Alumno alumno2 = new Alumno(“Abel Garcia”, “Los ceibos”);
Alumno alumno3 = new Alumno(“Jose Lopez”, “Centenario”);
alumno1: Alumno
nombre = Juan Perez
domicilio = Las Peñas
alumno2: Alumno
nombre = Abel García
domicilio = Los ceibos
alumno3: Alumno
nombre = Jose Lopez
domicilio = Centenario
Ventajas de la Programación Orientada a
Objetos
Las ventajas más importantes de la programación orientada a objetos son las siguientes:
el
• Mantenibilidad (facilidad de mantenimiento). Los programas que se diseñan utilizando
concepto de orientación a objetos son más fáciles de leer y comprender y el control de la
complejidad del programa se consigue gracias a la ocultación de la información que permite
dejar visibles sólo los detalles más relevantes.
• Modificabilidad (facilidad para modificar los programas). Se pueden realizar
añadidos
o supresiones a programas simplemente añadiendo, suprimiendo o
modificando objetos.
• Resusabilidad. Los objetos, si han sido correctamente diseñados, se pueden usar
numerosas veces y en distintos proyectos.
• Fiabilidad. Los programas orientados a objetos suelen ser más fiables ya que se basan en el
uso de objetos ya definidos que están ampliamente testados.
Introducción a Java
• Lenguaje de Programación Orientado a Objetos
• Características
●
Independiente de la plataforma
●
●
●
●
●
Compilador no genera código ejecutable nativo a la
máquina donde se ejecuta
Compilador produce un formato especial llamado byte
codes
Para que bytescodes puedan ejecutarse en una máquina
específica se necesita un intérprete en tiempo de
ejecución. El intérprete es el que genera código de
lenguaje de máquina entendido por la máquina.
Ambiente de ejecución normalmente se conoce como
Java Virtual Machine (JVM).
Recolector de basura.
Estructura de programas en Java


Cada programa ejecutable en java
consiste en una clase
Aplicación

Al menos una de las clases debe
contener el método main

Declaración de método main debe ser
método estático

Metodo asociado a clase no objeto

Declaración public, cualquiera puede
invocarlo
Palabras clave en Java
abstract
boolean
break
byte
case
catch
char
class
const
continue
default if
do
implements
double import
public
else
instanceof
extends int
final
interface
finally
long
float
native
for
new
goto
package
private
this
protected throw
throws
return
short
static
strictfp
super
transient
try
void
volatile
while
switch
synchronized
 Palabras claves tienen significado especial y no
pueden usarse como identificadores de variables
ni clases ni métodos
Constantes
 Declaración
●
public static final <type> <name>
= <value> ;
 Ejemplos
public static final int DAYS_IN_WEEK =
7;
public static final double INTEREST_RATE
= 3.5;
public static final int SSN = 658234569;
Control de flujo

Ciclos


for(), while(), do-while()
Condicionales


If – else
switch (expresion){
case n: sentencias;
case m: sentencias;
…
default: sentencias;
}
Objetos





Instancias de tipos de datos complejos llamados
clases
Entidad que contiene datos y comportamientos
Existen variables, que almacenan datos dentro
de un objeto
Existen métodos dentro de objeto que
representan su comportamiento
Creación de objetos en Java mediante uso de
keyboard new