Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Algoritmos y programas Tcnicas bsicas de programacin Introduccin a la programacin estructurada Introduccin a las estructuras de datos y tipos de datos Aplicaciones de los tipos de datos estructurados Archivos Herramientas de desarrollo Hola mundo La Abstraccin y el Encapsulamiento Reconocimiento de Objetos y Clases Reconocimiento de Objetos y Clases en el mundo real
Qu es un algoritmo?
Si se consulta en la Wikipedia la definicin de algoritmo, se entiende que ste es un conjunto finito de instrucciones que se deben seguir para resolver un problema. No obstante, desde el punto de vista de la programacin de ordenadores, la definicin del algoritmo como la especificacin de una serie de pasos, es incompleta. Debe observarse que los ordenadores son equipos que tienen limitaciones fsicas en cuanto a capacidad de almacenamiento y procesamiento. Por consiguiente debemos refinar un poco ms nuestra definicin de algoritmo para hacerla aplicable de manera efectiva en el mbito de la informtica. Definicin: Un algoritmo se entiende como una sucesin finita de pasos que debe cumplir las siguientes especificaciones: Cada paso del algoritmo debe estar bien definido: Esto significa que la definicin de un paso debe ser suficientemente clara, para que una persona pueda entenderla y realizarla. Si bien no se puede dar un criterio determinstico para decidir si un paso est bien definido, debemos apelar al sentido comn para decidir que un paso est especificado sin ambigedades. Un algoritmo debe tener un principio y un fin: Un programa es un algoritmo escrito con un objetivo: conseguir un resultado. No tiene sentido crear un programa que espere ~ segundos (infinitos segundos) y luego escriba en pantalla "Hola Mundo!", del mismo modo que un algoritmo debe tener un principio bien definido (tampoco tiene sentido el algoritmo "haz
Modelos computacionales
Un modelo computacional es un modelo matemtico en las ciencias de la computacin que requiere extensos recursos computacionales para estudiar el comportamiento de un sistema complejo por medio de la simulacin por computadora. El sistema bajo estudio es a menudo un sistema complejo no lineal para el cual las soluciones analticas simples e intuitivas no estn fcilmente disponibles. En lugar de derivar una solucin analtica matemtica para el problema, la experimentacin es hecha con el modelo cambiando los parmetros del sistema en la computadora, y se estudian las diferencias en el resultado de los experimentos. Las teoras de la operacin del modelo se pueden derivar/deducir de estos experimentos de computacionales. Ejemplos de modelos de computacionales comunes son modelos de el pronstico del tiempo, modelos del Earth Simulator, modelos de simulador de vuelo, modelos de plegamiento molecular de protenas, y modelos de red neural.
Lenguaje ensamblador
El cdigo mquina tena dos grandes inconvenientes para los programadores: las instrucciones eran difciles de recordar, ya que no guardaban relacin con la operacin que se est realizando. puede haber, y de hecho hay, diferencias entre las instrucciones de un procesador a otro. Todo esto ha llevado a "poner nombre" a las instrucciones de cdigo mquina de manera que a una secuencia concreta de bits que realiza una operacin se le pone un nombre sencillo que identifique la operacin. Esta traduccin a un lenguaje ms sencillo para las personas resulta en una mayor comodidad para el programador, adems el proceso de traduccin inverso de lenguaje ensamblador a cdigo mquina puede ser realizado por un sencillo programa.
Traductores e intrpretes
Tras la escritura del algoritmo, un compilador o un intrprete (otros programas) transformarn el texto en cdigo mquina que el procesador es capaz de ejecutar. Toda esta abstraccin permite resolver problemas alejados de sumar nmeros binarios, como pueden ser la consulta de esta misma enciclopedia o jugar a un videojuego en 3D.
Todo eso no es gran derroche de recursos para un ordenador medio actualmente, pero dura sus 10 o 15 segundos. En cambio, con un lenguaje interpretado, el programa intrprete analiza el fichero de cdigo y lo va ejecutando en tiempo real, sin compilarlo ni ensamblarlo. Otra de las ventajas de los lenguajes interpretados es que son multiplataforma: un programa en Perl, por ejemplo, no debe ser compilado dos veces (una para Unix y otra para Windows). Con que haya diferentes versiones del intrprete en cada uno de esos ordenadores, especficamente compilados para ellos, basta. Sus desventajas: Consume muchos recursos de memoria, sobre todo RAM. Se depende del intrprete: si no tienes instalado el intrprete que corresponda, no podrs ejecutar el programa. Ejemplos de lenguajes interpretados son PHP, Perl, Python, Tcl/Tk, BASIC, LISP (en algunas de sus versiones)...
mientras haya platos coger plato mientras haya suciedad echar jabon pasar el estropajo por el plato si plato es azul ponerlo con los azules
En programas ms grandes, esto es muchsimo ms lioso. Ahora conocemos la ejecucin de los algoritmos. Sin embargo, un programa se compone tanto de algoritmos como de una estructura de datos sobre los que operar.
Variables y constantes
Como hemos visto, el ordenador sigue una serie de instrucciones. Pero esas instrucciones tienen que operar sobre una serie de datos. El ordenador tpico slo procesa una instruccin a la vez, por lo que necesita 'espacios de memoria' donde guardar o depositar, a modo de cajones, por usar un smil conocido, los diversos datos con los que trabaja. Aqu es donde entran en juego las variables y constantes. En los inicios, con el ensamblador, se poda decir al ordenador, por ejemplo: 'Ejecuta la instruccin de esa posicin de memoria' o tambin 'En esa posicin de
memoria est guardada mi edad, imprmela por pantalla'. Todo esto se deriva del hecho de que los programas tambin son datos. Esta ambigedad presenta numerosos inconvenientes cuando se producen errores, como el lector se imaginar fcilmente: de ah que, a medida que los lenguajes promocionan hacia niveles superiores, se impida el tratamiento indistinto de los datos. A partir de entonces, un programa tiene que decirle al sistema operativo los cajones que necesita y ste se los proporciona independientemente de cules sean. Quizs suene ms complicado de lo que es. Un ejemplo: Queremos sumar dos nmeros. Nuestro programa tendr que tener tres cajones: Uno para cada nmero y otro para el resultado. Cada cajn tiene un nombre en vez de una posicin de memoria, de manera que slo hay que nombrarlo:
Necesito cajones A, B y Resultado Lee un nmero y gurdalo en A Lee un nmero y gurdalo en B Suma A y B y gurdalo en Resultado Imprime el contenido de Resultado
He aqu nuestro programa. Como cabe pensar, un procesador no tiene la instruccin "Imprime por pantalla"; esto es una llamada a otra porcin de cdigo que, gracias a la abstraccin, nosotros o no hemos escrito, o hemos escrito una sla vez; a partir de lo cual podemos imprimir todo el texto que queramos en la pantalla. Las posiciones de memoria A y B son Variables. Si queremos leerlas o escribirlas, podemos hacerlo. Tpicamente, existirn datos que no pensamos modificar; no querremos que el usuario tenga que introducirlos cada vez, pues son de naturaleza ms constante que otros (como puede ser el valor Pi para calcular el permetro o rea de un crculo). Para evitar modificarlos por error, podemos pedir al sistema variables especiales, que no puedan ser reescritas. Son las Constantes. Un ejemplo:
Comentario: Este programa calcula el rea de un crculo Constante PI = 3'14159265 Variable R Variable Resultado Leer nmero y guardar en R Calcular PI * (R * R) y guardar en Resultado Imprimir Resultado
El uso de variables y constantes se asemeja al uso que se les da en el lgebra o en otras ramas matemticas. Ntese tambin la clara separacin entre estructuras de datos y algoritmos. Segn los lenguajes, esto puede ser o no obligatorio, pero es recomendable en aras de una mayor claridad del trabajo.
Comentarios
El til concepto del comentario: son lneas de texto que el compilador o el intrprete no consideran como parte del cdigo, con lo cual no estn sujetas a restricciones de sintaxis y sirven para aclarar partes de cdigo en posteriores lecturas y, en general, para anotar cualquier cosa que el programador considere oportuno. Uno como programador debe tener como prioridad documentar nuestro cdigo fuente ya que al momento de depurar nos ahorrar mucho tiempo de anlisis para su correccin o estudio. Los programadores profesionales tienen la buena costumbre de documentar sus programas con encabezados de texto(encabezados de comentarios) en donde describen la funcin que va a realizar dicho programa, la fecha de creacin, el nombre del autor y en algunos casos las fechas de revisin y el nombre del revisor. Por lo general algunos programas requieren hacer uso de llamadas a subprogramas dentro de una misma aplicacin por lo que cada subprograma debera estar documentado, describiendo la funcin que realizan cada uno de estos subprogramas dentro de la aplicacin.
Otra sentencia de control son las de tipo SWITCH CASE. En este tipo de sentencias se especifica la variable a comparar y una lista de valores con lo que comparar. Aquel que sea el verdadero, se ejecutar:
SWITCH A CASE 0: PRINT "A vale 0" CASE 1: PRINT "A vale 1"
Otras herramientas imprescindibles del control de la ejecucin de nuestro cdigo son los BUCLES o CICLOS. Consisten en un mtodo que permite repetir un trozo de cdigo varias veces.
Hay bsicamente dos tipos: - Bucle FOR: El bucle FOR consiste en una sentencia que engloba un grupo de instrucciones y tiene una variable cuyo valor se va modificando en cada vuelta.
FOR A=0 TO 9 Especificamos en este caso que A variar desde 0 hasta 9, con lo que repetiremos el bucle 10 veces. PRINT "Estamos en el bucle" NEXT A Con esto cerramos el bucle e indicamos el final del bloque de instrucciones que se repiten
- Bucle WHILE: El bucle WHILE consiste en un bucle en el que el cdigo se repite hasta que se cumpla alguna condicin booleana (es decir, una expresin que d como resultado verdadero o falso). Hay variaciones, como el REPEAT...UNTIL, que se diferencia en el momento de comprobar si se hace verdadera o no la condicin.
WHILE A<>(B*2) DO Aqu especificamos la expresin que evaluamos y aqu se comprueba A=A+1 Incrementamos el valor de A hasta que sea igual a B*2 DONE Como en el FOR, necesitamos especificar donde acaba el bucle y el cdigo.
Estructuras de datos
creo a como entero creo b como entero creo suma como entero a=2 b=1 suma = a + b imprimir suma Estructura de una aplicacin. Cualquier programa que se realice debe llevar una estructura para disminuir la tarea de depuracin ya que esta labor lleva ms tiempo del estimado. Si eres principiante en el rea de programacin debes definir el programa a realizar, documentar cada uno de los pasos que realizas en tu programa, debes de considerar algn metodo de captura de errores, etc. En este subcaptulo abarcaremos el cmo estructurar una aplicacin para mejorar o disminuir el tiempo en depuracin, as como localizar ms rpidamente los errores. Puedes buscar en Internet el concepto "pseudocdigo", que no es ms que la escritura de un algoritmo en un lenguaje ms cercano al natural. Es decir, la orden en lenguaje Javascript que repetira el proceso de quitar suciedad
En primer lugar, es muy recomendable hacer un esquema sobre el papel con toda clase de datos que se vayan a utilizar. Por ejemplo, si queremos hacer un programa para controlar una empresa dedicada al alquiler de coches, podramos necesitar: Matrcula del coche Marca del coche Modelo del coche Color del coche Estado del coche (si est alquilado, en reparacin o disponible) Situacin del coche (en qu lugar del garaje o en qu localidad est) Kilometraje del coche Precio por hora del coche Nombre del cliente Apellidos del cliente Direccin del cliente DNI del cliente Permiso de conducir del cliente Nmero de cuenta del cliente
por un lado, y:
el control a cualquier otra parte del programa. Cuando se ejecuta una instruccin "goto" la secuencia de ejecucin del programa contina a partir de la instruccin indicada por "goto". De esta forma, para comprender como funciona un programa es necesario simular su ejecucin. Esto quiere decir que en la mayora de los casos es muy difcil comprender la lgica de un programa de este tipo. Algunos compiladores crean referencias cruzadas a las instrucciones apuntadas por los "goto", posibilitando una navegacin rpida a travs del cdigo fuente. Sin embargo, es algo comn en muchos lenguajes de programacin el empleo de una variable en asociacin con el destino del "goto", no permitiendo la creacin automtica de tablas de referencias cruzadas. Existen problemas similares en algunos lenguajes de programacin estructurada, por ejemplo cmo implementar las vistas en diferentes idiomas, de forma que varias personas puedan visualizar la misma informacin, pero cada una en su idioma. Esto se opone a la idea de utilizar algn tipo de abstraccin que permita comprender cmo funciona realmente un programa, que es lo que hace la programacin estructurada. Por este motivo, Dijkstra propuso la eliminacin de la sentencia "goto".
<stdio.h> //cabezera estandar de entrada y salida (aqui estan los ficheros necesarios). void main() //parte de la estructura de C, en dependencia del compilador se debe usar int main() { Char [12] a = Hola Mundo.; int b = 123; float c = 1.25; printf ("%s %d %f",a,b,c); } // define el fin del programa.(fin de la estructura) "Disculpen si no dejo todo en claro, me atrev a modificarlo por que no haba tcnicamente nada en esta seccin, si alguien sabe programacin, por favor revisen, ya que yo modifique esto por que es lo que estoy viendo en clases, pero apenas estoy iniciando"
Archivos
Un archivo es un fichero (dato) almacenado en algn recurso de memoria, generalmente en Disco Duro, pero dependiendo del uso (en ciertos casos) son almacenados en RAM. Un Fichero tiene muchas funciones, en programacin, estos almacenan cdigos o parte de ellos (en ocasiones se divide el cdigo en varios archivos). Tambin es posible que se necesita almacenar datos que el usuario introduce ("Como sus datos, nombre de usuario y contrasea, etc.), estos se empaquetan en un archivo y podrn ser usados luego por el programa por ejemplo, cuando el usuario desee loguearse de nuevo. En el lenguaje C++ y otros lenguajes orientados a objetos, se suele decir, "Todo es un archivo", debido a como trabajan estos. Archivos, en ocasiones puede referirse a las libreras, pero creo prudente hacer diferencias, una librera es mas una utilidad para el lenguaje en que programamos, un archivo es una utilidad mas cercana a nosotros (en lo posible, desarrollado por nosotros).
Herramientas de desarrollo
Las herramientas de desarrollo son aquellos programas o aplicaciones que tengan cierta importancia en el desarrollo de un programa (programacin). Pueden ser de importancia vital (como un ensamblador, un compilador o un editor) o de importancia secundaria, como una IDE (Integrated Development Environment Entorno de Desarrollo Integrado).
Compiladores
Los compiladores son programas que "traducen" un fichero de cdigo fuente de cualquier lenguaje interpretado al lenguaje ensamblador, y llama cuando sea necesario al ensamblador y al linker (enlazador). Los ms importantes son GCC (para C), G++ (para C++), G77 (para Fortran 77), Microsoft Visual C++, etc.
Ensambladores
Los ensambladores son aquellos programas que se encargan de desestructurar el cdigo en lenguaje ensamblador y traducirlo a lenguaje binario. Los archivos en lenguaje binario sern posteriormente enlazados en un nico fichero, el ejecutable. Los ms importantes son tas, gas...
Enlazadores (Linkers)
Son los programas que enlazan varios ficheros objeto en lenguaje binario para crear un nico fichero, el ejecutable del programa. El ms importante es ld.
Depuradores (Debuggers)
Como su nombre indica, sirve para corregir bugs. Se encargan de ejecutar, paso a paso y advirtiendo de errores, valores de variables, etc. un programa. Son particularmente tiles cuando el programa parece estar bien, pero no da el resultado esperado (se cuelga, da resultados errneos...). El ms importante es GDB. Actualmente casi todas las IDEs incluyen uno, o deberan.
Editores de texto
Son tan importantes como un compilador (imaginate como programar sin editores), y actualmente suelen incluir funciones especficamente dedicadas a la programacin, como resaltado de sintaxis, autoindentacin, etc. Grandes editores de texto son GNU Emacs, Vim, Scite...
Otras herramientas
No son tan importantes como las anteriores, pero tambin tienen su importancia: IDEs (Interfaz de Desarrollo Estructurada): juntan en un slo programa editor de texto, compilador, enlazador, ensamblador, depurador... Ejemplos de ellas son Anjuta, Dev-Cpp, Codeblocks... Programas de indentacin: sirven para aclarar el cdigo escrito confusamente. El nico que conozco es indent. De todas formas, un editor de texto medianamente decente suele incluir sus propias funciones de indentado.
Hola
ABAP/IV
REPORT HOLAMUNDO. WRITE 'Hola, mundo!'.
mundo
ABC
WRITE "Hola mundo!"
ActionScript
trace("Hola, mundo!");
ADA
with Ada.Text_IO; procedure Hola_Mundo is begin Ada.Text_IO.Put_Line("Hola, mundo!"); end Hola_Mundo;
ASP
<% Response.Write("Hola Mundo") %>
AWK
#!/bin/awk -f BEGIN{ print "Hola, mundo!"; }
Bash
#!/bin/bash echo "Hola mundo"
Basic
PRINT "Hola Mundo"
C
#include <stdio.h> int main(void) { printf("Hola, mundo!\n"); return 0; }
C++
#include <iostream> int main() { std::cout << "Hola, mundo!" << std::endl; return 0; }
C++/CLI
int main() { System::Console::WriteLine("Hola, mundo!"); return 0; }
C#
using System; class MainClass { public static void Main() { Console.WriteLine("Hola, mundo!"); } }
COBOL
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. ENVIRONMENT DIVISION. DATA DIVISION. PROCEDURE DIVISION. MAIN SECTION. DISPLAY "Hola mundo" STOP RUN.
ColdFusion
<cfset variable="Hola Mundo"> <cfoutput>#variable#</cfoutput>
MS-DOS
En sistemas operativos de la familia DOS como MS-DOS o PC-DOS que usan el Intrprete de comandos COMMAND.COM o sistemas que usan como intrprete de comandos CMD.EXE (OS/2 y Windows de la rama NT) se pueden crear archivos de proceso por lotes con extensiones BAT y CMD respectivamente con el siguiente contenido:
@echo Hola, Mundo!
Eiffel
class HOLA_MUNDO create make feature make is do end end -- HOLA_MUNDO
io.put_string("%nHola mundo%N")
Erlang
-module(hola). -export([hola_mundo/0]). hola_mundo() -> io:fwrite("Hola mundo!\n").
Fortran
PROGRAM HOLA PRINT *, 'Hola, mundo!' END
Haskell
holaMundo :: IO () holaMundo = do putStrLn ("Hola mundo!")
HTML/JavaScript
<html> <head> <title>Hola Mundo</title> <script type="text/javascript"> alert("Hola mundo!"); </script> </head> <body> </body> </html>
INTERCAL
PLEASE DO ,1 <- #13 DO ,1 SUB #1 <- #238 DO ,1 SUB #2 <- #112 DO ,1 SUB #3 <- #112 DO ,1 SUB #4 <- #0 DO ,1 SUB #5 <- #64 DO ,1 SUB #6 <- #238 DO ,1 SUB #7 <- #26 PLEASE DO ,1 SUB #8 <- #22 DO ,1 SUB #8 <- #248 DO ,1 SUB #9 <- #168 DO ,1 SUB #10 <- #24 DO ,1 SUB #11 <- #16 DO ,1 SUB #12 <- #158 DO ,1 SUB #13 <- #52 PLEASE READ OUT ,1 PLEASE GIVE UP
Java
public class HolaMundo { public static void main(String[] args) { System.out.println("Hola, mundo!"); } }
LISP
(format t "Hola, mundo!") Liberty BASIC print "Hola, mundo!"
MATLAB
close all; clear all; clc; % cierra todas las ventanas que pueda haber % borra todas las variables % limpia la pantalla % muestra el mensaje
disp('hola mundo');
NATURAL
WRITE 'Hola, mundo!'.
Object REXX
Utilizando objetos:
.output~say('Hola, mundo.') .output~lineout('Hola, mundo.') .output~charout('Hola, mundo.'||eol) -- eol definido previamente Pascal Program HolaMundo; begin Writeln('Hola, mundo!'); end.
NetREXX
OpenInventor
#Inventor V2.1 ascii Text3 { string "Hola mundo" }
Perl
PHP
Python
print "Hola mundo"
QBasic
PRINT "Hola mundo"
REXX
say "Hola Mundo"
Ruby
puts "Hola Mundo"
SAPScript
MAIN P1 Hola Mundo /
Seed7
$ include "seed7_05.s7i"; const proc: main is func begin writeln("Hola Mundo"); end func;
Smalltalk
Transcript show: 'Hola, mundo!'
SQL
SELECT 'HOLA MUNDO' FROM DUAL;
Unlambda
```s``sii`ki ``s``s`ks ``s``s`ks``s`k`s`kr ``s`k`si``s`k`s`k `d````````````.H.o.l.a. .m.u.n.d.o k k `k``s``s`ksk`k.*
Visual Basic
Sub Main() MsgBox "Hola, mundo!" End Sub
X3
xBase
? "Hola Mundo"
La Abstraccin y el Encapsulamiento
Abstraccin
La abstraccin, un principio por el cual se asla toda aquella informacin que no resulta relevante a un determinado nivel de conocimiento. Abstraccin: Es una descripcin de especificacin que enfatiza algunos de los detalles o propiedades de algo. La abstraccin consiste en captar las caractersticas esenciales de un objeto, as como su comportamiento. Es un mtodo por el cual abstraemos valga la redundancia, una determinada entidad de la realidad de sus caractersticas y funciones que desempean, estos son representados en clases por medio de atributos y mtodos de dicha clase.
Ejemplos de abstraccin
Ejemplo 1: Qu caractersticas podemos abstraer de los automviles? o Qu caractersticas semejantes tienen todos los automviles? Caractersticas: Marca, Modelo, Nmero de chasis, Pesoo llantas o cauchos, Puertas, Ventanas... Comportamiento: Acelerar, Frenar, Retroceder... Ejemplo 2: La gerencia de un taller mecnico necesita un sistema para controlar los vehculos que ingresan a sus instalaciones. En este caso, las caractersticas esenciales de la clase vehculo son: Marca, Modelo, Color, Falla detectada, Nombre del Propietario, Direccin del Propietario, Telfono del Propietario... A esto se le llama abstraccin. En general un programa no es ms que una descripcin abstracta de un procedimiento o fenmeno que existe o sucede en el mundo real. La abstraccin es crucial para comprender este complejo mundo. La abstraccin es esencial para el funcionamiento de una mente humana normal y es una herramienta muy potente para tratar la complejidad. La abstraccin es clave para disear un buen software.
Procedimientos
Proporcion la primera posibilidad de ocultacin de informacin.
Modulos
Es una tcnica que proporciona la posibilidad de dividir sus datos y procedimientos en una parte privada y una parte pblica. Proporcionan un mtodo efectivo de ocultacin de la informacin, pero no permiten realizar instanciacin, que es la capacidad de hacer mltiples copias de las zonas de datos.
Encapsulamiento
Consiste en unir en la Clase las caractersticas y comportamientos, esto es, las variables y mtodos. Es tener todo esto en una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstraccin. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde slo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesar conocer que hace la Clase pero no ser necesario saber cmo lo hace.
Ejemplos
Ejemplo 1: De un televisor, el usuario conoce su apariencia y parte de su funcionamiento. Slo le importa que funcionen el selector de canales, el video y el audio; no le interesa saber cmo funciona cada una de las partes internas del aparato, ese detalle slo le interesan al fabricante y al tcnico de servicio. Ejemplo 2: De un animal no slo es necesario conocer su apariencia; tambin se requiere conocer qu sabe hacer y cmo reacciona ante determinadas situaciones. Caja Negra: Un objeto en el que su comportamiento y atributos son conocidos pero no as su trabajo interno, el cual continua siendo un misterio.
presentes, tal como se haca en la programacin orientada a procedimiento. Lo cual, desde el punto de vista econmico, que nunca hay que dejar de tener presente, si resulta viable, ya que los objetos bien diseados pueden ser utilizados en diversas aplicaciones, con lo cual el tiempo de desarrollo total se reduce. En Java, un objeto se define como una estructura que encapsula atributos (datos de configuracin, propiedades) y comportamientos (procedimientos) de una entidad con un papel bien definido en una aplicacin. Cada objeto tiene: Estado: Se compone de atributos (propiedades estticas) y valor actual (valores dinmicos) Comportamiento: Representa cmo un objeto acta y reacciona. Identidad: Cada objeto es nico, ningn objeto es igual a otro.
A continuacin se muestran algunas de las propiedades que se pueden aplicar a los objetos, tal como se han definido: Los objetos son cosas. Los objetos pueden ser simples o complejos. Los objetos pueden ser reales o imaginarios.
Casi todo puede ser considerado un objeto. El dinero, el helicptero, una bicicleta, los perros, el coche. Los objetos representan cosas, simples o complejas, reales o imaginarias. Algunas cosas no son objetos, sino atributos, valores o caractersticas de un objeto. Es decir, no todas las cosas son objetos, ni son consideradas normalmente como objetos. Algunas de ellas son simplemente atributos de los objetos como el color, el tamao y la velocidad. Los atributos reflejan el estado de un objeto, la velocidad del objeto avin, o el tamao de un objeto edificio. Entender que es un objeto es la clave para entender cualquier lenguaje orientado a objetos. Los objetos pueden tener partes pblicas y privadas, a menudo llamadas miembros. 1.- Miembros Pblicos: Los miembros pblicos (interfaz o mtodos) de una clase describen qu es lo que pueden hacer los objetos de esa clase. 2.- Miembros Privados: Describen la implementacin, el cmo lo hace. Interacciones entre Objetos: Los objetos contribuyen al comportamiento del sistema colaborando con otros objetos. El modelado de objetos no slo modela los objetos en un sistema, sino tambin sus interrelaciones. Para realizar su tarea, un objeto puede delegar trabajos en otro. Este otro puede ser parte integrante de l o ser cualquier objeto del sistema. Intercambio de Mensajes: Los objetos interaccionan envindose
mensajes unos a otros. El mtodo de envo de mensajes depende de la naturaleza de los objetos modelados. 1.- Los objetos interaccionan por paso de mensajes. 2.- Un objeto enva un mensaje a otro. 3.- El otro puede contestar, cambiar su estado, o reaccionar de la manera apropiada. 4.- Los objetos slo pueden interaccionar a travs de su interfaz pblico. Los Objetos de Software, al igual que los objetos del mundo real, tambin tienen caractersticas y comportamientos. Un objeto de Software mantiene sus caractersticas en una o ms variables, e implementa su comportamiento con mtodos. Un mtodo es una funcin o subrutina asociada a un objeto. Clases: En el mundo real, normalmente se tiene muchos objetos del mismo tipo. Por ejemplo: Un telfono celular es slo uno de los miles que hay en el mundo. Si se habla en trminos de la programacin orientada a objetos, se puede decir que el objeto celular de cualquier tipo es una instancia de una clase conocida como celular. Los celulares tienen caractersticas (marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisin de datos, etc.). Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los celulares comparten caractersticas comunes y construyen modelos o plantillas comunes, para que a partir de esas se puedan crear muchos equipos celulares del mismo modelo. A ese modelo o plantilla se le llama Clase, y a los equipos que se sacan a partir de esta se le llaman objetos. Esto mismo se aplica a los objetos de Software, se puede tener muchos objetos del mismo tipo y mismas caractersticas. Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. No existe diferencia entre un objeto y una instancia. Slo que el objeto es un trmino ms general, pero los objetos y las instancias son ambas representacin de una clase. Instancia: Es un objeto de una clase en particular.
Ejemplos
En un aula de clases observamos los siguientes objetos: Alumno Profesor Mesa Silla Mesa banco Pizarrn Interaccin entre objetos: Los objetos no slo tienen atributos relacionados con su forma fsica sino que, adems, exhiben comportamientos especficos de su clase. Alumno: Estudia, aprende. Profesor: Ensea, evala. Mesa: Ordenada, desordenada. Silla: Ocupada, desocupada. Mesa banco: Ocupado, desocupado. Pizarrn: Pintado, borrado Observamos que en el aula hay varios objetos alumno, por lo que pensamos en el grupo de alumnos, al que denominaremos como la clase alumno. De igual
manera, cada materia es impartida por un profesor; el conjunto de profesores forman la clase Profesor. Pudiramos extender nuestro anlisis al pizarrn, la mesa, la silla,, al conjunto de mesa bancos, etc.
Clases:
Es la definicin de un objeto. Cuando se programa un objeto y se definen sus caractersticas y funcionalidades, realmente se programa una clase. Una clase es la descripcin de un conjunto de objetos; consta de datos que resumen caractersticas comunes de un conjunto de objetos. Se pueden definir muchos objetos de la misma clase. Dicho de otro modo, una clase es la declaracin de un tipo objeto. Las clases son similares a los tipos de datos y equivalen a mtodos y plantillas que describen como se construyen ciertos tipos de objetos. Cada vez que se construye un objeto a partir de una clase estamos creando lo que se llama una instancia de esa clase. Por consiguiente, los objetivos no son ms que instancias de una clase, una instancia es una variable de tipo objeto. En general instancia de una clase y objeto son trminos intercambiables.