PDF de programación - Lenguaje de programación

<<>>
Imágen de pdf Lenguaje de programación

Lenguaje de programacióngráfica de visualizaciones

Publicado el 12 de Julio del 2018
777 visualizaciones desde el 12 de Julio del 2018
807,4 KB
7 paginas
Abstracción

Encapsulamiento

Separación de las propiedades de un

método / objeto / clase / módulo

de la implementación del mismo

Ocultamiento de información

No es necesario dar conocer los detalles de la
implementación para poder hacer uso de un
método/clase/módulo

Se protegen las partes del código que le hacen
uso contra cambios al realizar modificaciones a
la implementación específica de ello

Objeto

Polimorfismo

estado + comportamiento + identidad

atributos: los datos

métodos: eventos, mensajes, llamadas, funciones

cada objeto es único

Uso de la misma definición de una funcionalidad
con varios diferentes tipos de datos

Mecanismos

Sobrecarga de operadores

Polimorfismo paramétrico

atributos y métodos compartidos (de clase)

Polimorfismo de subtipos (herencia)

EJEMPLO DE POLIMORFISMO

Operación
3 + 7
0.1 + 11.001
2 + 0.0008
“ho” + “la”

Resultado
12
11.101
2.0008
”hola”

Herencia

Una clase se deriva de otra

Finalidad: extender la funcionalidad para una
necesidad específica

Reuso implícito del código existente

Redefinición selectiva y parcial de la
funcionalidad heredada

Padre único o padres múltiples

Si la asignación del tipo del objeto referenciado ocurre durante la
ejecución del programa, se habla de asignación tardía/dinámica.
Otra opción es resolverlo ya en tiempo de compilación.

Interfaces

Lenguajes orientados a objetos

Algunos lenguajes incluyen clases padre que no
pueden ser usadas para la creación de instancias

Clases abstractas (C++)

Atributos (crea conflictos potenciales)

Métodos con o sin implementación

Interfaces (Java)

Solamente métodos sin implementación

Lenguajes de programación
fundamentadas en la definición de clases,
creación de objetos e interacciones entre
los objetos a través de sus métodos

Altamente populares

Ada

lenguaje moderno que incorpora muchos elementos
sofisticados (objetos, visibilidad, excepciones, etc.)
propuesto al inicio de los años 80
no realmente para principiantes
no realmente importa si se usa minúsculas o mayúsculas

palabras reservadas típicamente en minúscula
nombres de constantes, por ejemplo, en mayúscula

paquete gnat en ubuntu
http://www.infres.enst.fr/~pautet/Ada95/a95list.htm

C++

Cabeceras .hpp contienen declaraciones de clases

Interfaces para el programador

Implementaciones están en los .cpp

Compilador g++ en el terminal

viene tal cual en ubuntu y con XCode en OS X

MonoDevelop IDE para .NET en ubuntu

Popular, potente, a veces algo complicado

Ojo con el alcance de variables, en particular

Al compilar, por defecto el ejecutable creado reside en el archivo a.out, pero con la opción
-o se puede dirigirlo directamente bajo otro nombre:
Ejemplo (fragmento)

> gcc cprog.c
> ./a.out
Hello, world!
procedure Pop(S: in out Stack; D: in out StackData'class) is
F(1-10): 0 1 2 3 5 8 13 21 34 55 89
Zombie: Node_Ptr;
Bye!
begin
> gcc -o fibo cprog.c
if S.head /= null then
Zombie := S.Head;
> ./fibo
S.Head := S.Head.Next;
Hello, world!
D := Zombie.Data.all;
F(1-10): 0 1 2 3 5 8 13 21 34 55 89
Free(Zombie.Data);
Bye!
Free(Zombie);
end if;
>
end Pop;
procedure Top(S: Stack; Data: in out StackData'class) is
begin
if S.Head /= null then
Data := S.Head.Data.all;
end if;
end Top;

http://sandbox.mc.edu/~bennet/ada/examples/genstack_adb.html

Los programas de C++ están compuestas por clases, mientras los de C están estructurados en sub-
rutinas. En ambos lenguajes, se suele separar definiciones de implementación. En C, las defini-
ciones de pone en archivos tipo .h y en C++ en archivos tipo .hpp. El código de C se pone en
archivos .c y lo de C++ en archivos tipo .cpp.
Como un ejemplo simple de un programa en C++, tenemos el archivo siguiente de definiciones
bajo el nombre cuenta.hpp:

Ejemplo .hpp

class CuentaBancaria {
CAPÍTULO7. PROGRAMACIÓN
private:
double balanceActual;

public:

CuentaBancaria();
double balance();
void depositar(double monto);
int retirar(double monto);

};

y el código siguiente en cppprog.cpp:

ciones de pone en archivos tipo .h y en C++ en archivos tipo .hpp. El código de C se pone en
archivos .c y lo de C++ en archivos tipo .cpp.
Como un ejemplo simple de un programa en C++, tenemos el archivo siguiente de definiciones
bajo el nombre cuenta.hpp:

Ejemplo .cpp: métodos

Ejemplo .hpp

CuentaBancaria();
double balance();
void depositar(double monto);
int retirar(double monto);

y el código siguiente en cppprog.cpp:

public:

};

CAPÍTULO7. PROGRAMACIÓN

public:

class CuentaBancaria {
CAPÍTULO7. PROGRAMACIÓN
CuentaBancaria();
double balance();
private:
void depositar(double monto);
int retirar(double monto);
double balanceActual;

};

public:

y el código siguiente en cppprog.cpp:

CuentaBancaria();
double balance();
void depositar(double monto);
int retirar(double monto);

#include <iostream>
#include "cuenta.hpp"
};

using namespace std;

CuentaBancaria::CuentaBancaria() {

balanceActual = 0.0;

double CuentaBancaria::balance() {

y el código siguiente en cppprog.cpp:

return balanceActual;

balanceActual += monto;
return;

void CuentaBancaria::depositar(double monto) {
#include <iostream>
#include "cuenta.hpp"

Ejemplo .cpp: main

int CuentaBancaria::retirar(double monto) {

if (balanceActual >= monto) {

}

balanceActual -= monto;
return 0;

using namespace std;

}
return -1;

CuentaBancaria::CuentaBancaria() {

balanceActual = 0.0;

int main(int argc, void* args) {

}

double CuentaBancaria::balance() {

CuentaBancaria* bc = new CuentaBancaria();
cout << "Cuenta nueva con balance de " << bc->balance() << " pesos." << endl;
cout << "Depositando 500 pesos..." << endl;
bc->depositar(500.0);
cout << "Balance actual: " << bc->balance() << endl;
bc->retirar(200.0);
cout << "Balance actual: " << bc->balance() << endl;
delete bc;
return 0;

return balanceActual;

}

void CuentaBancaria::depositar(double monto) {

balanceActual += monto;
return;

Al compilar y ejecutar, obtenemos lo siguiente en yalma.fime.uanl.mx:
Podría ir en su propio archivo .cpp o en el mismo

int CuentaBancaria::retirar(double monto) {

}
> g++ cppprog.cpp
> ./a.out
Cuenta nueva con balance de 0 pesos.
Depositando 500 pesos...
Balance actual: 500
Balance actual: 300
> g++ -o banco cppprog.cpp
}
> ./banco

if (balanceActual >= monto) {

balanceActual -= monto;
return 0;

}

}

}

}

136

#include <iostream>
#include "cuenta.hpp"

using namespace std;

CuentaBancaria::CuentaBancaria() {

balanceActual = 0.0;

double CuentaBancaria::balance() {

return balanceActual;

void CuentaBancaria::depositar(double monto) {

balanceActual += monto;
return;

int CuentaBancaria::retirar(double monto) {

if (balanceActual >= monto) {

balanceActual -= monto;
return 0;

}
return -1;

}

}

}

}

}

136

Noten el ::

int main(int argc, void* args) {

CuentaBancaria* bc = new CuentaBancaria();
cout << "Cuenta nueva con balance de " << bc->balance() << " pesos." << endl;
cout << "Depositando 500 pesos..." << endl;
bc->depositar(500.0);
cout << "Balance actual: " << bc->balance() << endl;
bc->retirar(200.0);
cout << "Balance actual: " << bc->balance() << endl;
delete bc;
return 0;

Smalltalk

Al compilar y ejecutar, obtenemos lo siguiente en yalma.fime.uanl.mx:

> g++ cppprog.cpp
> ./a.out
Cuenta nueva con balance de 0 pesos.
Depositando 500 pesos...
Balance actual: 500
Balance actual: 300
> g++ -o banco cppprog.cpp
> ./banco
Cuenta nueva con balance de 0 pesos.
Depositando 500 pesos...
Balance actual: 500
intérprete
Balance actual: 300
>

lenguaje fuertemente orientada en objetos

intercambio de mensajes entre objetos

en ubuntu, paquete gnu-smalltalk

versión de código abierto llamada Squeak

http://squeakbyexample.org/
http://www.smalltalk.org/main/
http://www.cs.oswego.edu/~odendahl/manuals/smalltalk/tutorial/

Ejemplo

^(self var sqrt)

^( self sum / self size )

^( self inject: 0 into: [ :s :x | s+x ])

^(( self sumsquares - ( self squaresum / self size ))/(self size - 1))

Methods Collection 'new'
sum
!
|
mean
!
|
var
!
CAPÍTULO7. PROGRAMACIÓN
|
sigma
7.1.2. Java
!
|
squares
!
Java es un lenguaje orientado a objectos que tiene mucho en común con C y C++. En Java, ya
|
muchas de las operaciones “básicas” de C/C++ se hace con objetos.
sumsquares
!
|
Se usa la instrucción/bin/javac es la compiladora misma y la instrucción /bin/java es
squaresum
para ejecutar programas ya compilados escritos en Java. En yalma.fime.uanl.mx, la versión
!
]
es 1.4.2, que ya es bastante vieja:
http://csci.csusb.edu/dick/cs320/smalltalk/

^( self collect: [ :x | x * x ] )

^( self squares sum )

^( self sum squared )

137

> java -version
java version "1.4.2_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)
Java HotSpot(TM) Client VM (build 1.4.2_05-b04, mixed mode)
>

El siguiente ejemplo es prácticamente lo mismo que lo de C++ de la sección anterior; escribimos
todo en un sólo archivo CuentaBancaria.java:

Ejemplo

public class CuentaBancaria {

private double balanceActual;

public CuentaBancaria() {

this.balanceActual = 0.0;

}

public void depositar(double monto) {

this.balanceActual += monto;
return;

}

public boolean retirar(double monto) {
if (this.balanceActual >= monto) {

this.balanceActual -= monto;
return true;

} else {

return false;

}

}

}

public String toString() {

return ("Balance actual: " + this.balanceActual);

public static void main(String[] args) {

CuentaBancaria b = new CuentaBancaria();
System.out.println("Nueva cuenta creada.");
b.depositar(500.0);
System.out.println(b);
b.retirar(200.0);
System.out.println(b);

> java -version
java version "1.4.2_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)
Java HotSpot(TM) Client VM (build 1.4.2_05-b04, mixed mode)
>

Java

El siguiente ejemplo es prácticamente lo mismo que lo de C++ de la sección anterior; escribimos
todo en un sólo archivo CuentaBancaria.java:

Implementación y definición van juntos en un
sólo archivo fuente por cla
  • Links de descarga
http://lwp-l.com/pdf12492

Comentarios de: Lenguaje de programación (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad