Anda di halaman 1dari 29

lenguaje

Muchos se quieren iniciar en el mundo de la programación directamente


aprendiendo un lenguaje, lo cual no es lo correcto ya que estarían dejando a un
lado las bases necesarias para aprenderlo con mayor facilidad y que al final
permitirán que seamos capaces de aprender cualquier lenguaje sin problema en el
momento que lleguemos a necesitarlo'
Logica.-Tener idea del camino mas simple y mas fácil, que escogemos para lograr
nuestro objetivo
programa.-Conjunto de instrucciones que al ser ejecutadas logran un objetivo

Programación.-Una ser¡e de pasos e instrucciones para dar solución al problema

¿Qué Necesito Para Programar?


-Mentalidad abierta.-Preguntar lo que no entiendes, dar soluciones creativas
-Comunicación
-globalizacion.-Conocer varios lenguajes
-Lenguaje de programación.-
-bajo nivel.-facil de entender para la maquina
-alto nivel.-facil de entender para el programador
-Entorno de desarrollo.-Mejor conocido como IDE

¿Se Necesitan Las Matemáticas Para Programar?


Si, si se necesita, pero solo se necesita de la suma, resta, multiplicación y división
Los Operadores Matemáticos En Programación
Operador.-Son signos que sirven para relacionar
Reglas al programar expresiones matemáticas:
-Una expresión a de ser lineal.- en una sola línea
-El orden jerárquico.-Potencia, multiplicación y división, suma y resta
-El uso de paréntesis.- para dar un orden jerárquico diferente
-Los paréntesis interiores son prioritarios
Las Metodologías En Programación.- Serie de pasos para llegar a un objetivo
planteado

1)Objetivo.- Tener claro el problema, el fin del objetivo

Autor:Alejandro Fernando Rojas Barja. Fundamentos de programación


2)Algoritmo.- Como vamos a resolver el problema
3)Testing.- Probar nuestro algoritmo
4)Deploy.- Poner nuestro programa en marcha
Conceptos Elementales
-Atributo.- Característica de una propiedad, son datos o valores
-Tipo de dato.- Caracteristica del dato que le dice al ordenador que dato va a
procesar, como:
-Entero.- Sin decimales, rango de negativo a positivo (int)
-Flotante.- Con parte decimal, rango de negativo a positivo (float)
-Carácter.- Cualquier símbolo o letra (char)
-Booleanos.- solo puede ser: "true" o "false"
-Variables.- Lo que varia o cambia, dato que ocupa espacio en el ordenador y que
puede cambiar de valor durante la ejecución del programa, se clasifica en:
-Numericas.- Enteros Y flotantes
-Alfanuméricas.- letras, números y caracteres especiales
-Logicas.- Datos Booleanos
-Constantes.- Dato numérico o alfanumérico que no cambia durante la ejecución
del programa
-Expresiones.- Combinaciones de constantes, variables, símbolos de operación,
paréntesis y nombres de funciones
Practica

Autor: Alejandro Férnando Rojas Barja. Fundamentos de programación


Flatante

Variables Constantes

ffltfilü

defirir pi* 3.14


En{oru nl * 2, n2 *S, nll * ü llotante n'l * ?"5. n? *7.2. n3

n3"n2-nl
nl"pi
nI.2
nI; n3 + pi
n'l*nl+n*
n{'nl/nÍ
n3. nf * n§
n3"n2+nl
n2=n3/nl
*fl*r¡["pi

fin
fin

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


¿Qué es un Algoritmo?
Una serie de pasos o instrucciones finitas y ordenadas que sirven para dar
solución al problema, este debe tener un inicio y un fin, se dividen en 2:
-Cualitativo.- Aquellos que no intervienen cálculos numéricos, este contiene:
-La secuencia de acciones.- Es una sucesión de acciones una detrás de
otra
-Decisión de acciones.- Decidir el camino lÓgico

-El ciclo de acciones.- Estructuras que nos permiten repetir una cantidad de
acciones
-Cuantitativo.- Aquellos en el que si intervienen cálculos numéricos, este contiene:
-Entrada.- lntroducimos los datos en Ia maquina
-Proceso.- lndicamos Io que queremos hacer
-Salida.- Muestra los resultados del proceso
Diagrama de Fluio y el Pseudocódigo
-Pseudocodigo.- Una forma de representar el algoritmo de manera que lo
podamos entender mas fácilmente
-Diagrama de flujo.- Una forma de representar el algoritmo de manera mas grafica
Diferentes Lenguajes De Programación
Conceptos Básicos
-Programacion orientada a objetos.- Es una forma especial de programar, mas
cercana a como expresaríamos las cosas en la vida real, Es pensar las cosas de
una manera distinta, para escribir nuestros programas en términos de objetivos,
propiedades y métodos
-lDE.- Consiste enun editor de código, un compilador, un depurador y un
constructor de interfaz grafica(G Ul )
-Lenguaje multiplataforma.- Es todo aquel lenguaje que tiene la capacidad de
funcionar en mas de un sistema operativo

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


Unidad 3: Fundamentos de Programación

1)Literales

Una literal es un valor constante formado por una secuencia de caracteres.


Cualquier declaración en Java que defina un valor constante -un valor que no
pueda ser cambiado durante la ejecución del programa- ea una literal'

Son ejemplos de literales los números, los caracteres y las cadenas de caracteres.

. Literales numéricas
Se pueden crear literales numéricas a partir de cualquier tipo de dato
primitivo.
" Ej
t iii:' iiii:iii 'i:;''
. 123.456F llliteral float
. Literales booleanas
Las literales boolenas consisten de las palabras reservadas true y false.

. Literales de caracteres
Las literales de caracteres se expresan por un solo caracter entre comillas
sencillas

Ej' 'a" 'o/ot


' '7'

. Literales de cadena
Una cadena es una combinación de caracteres. Las cadenas en Java son
instancias de la clase String, por ello cuentan con métodos que permiten
combinar, probar y rnodificar cadenas con facilidad.
Las literales de cadena se representan por una secuencia de caracteres
entre comillas dobles.

Ej. "hola", "cadena123", "12345"


2)Expresiones y Operadores

Expresión

Una expresión es una combinación de variables, operadores y llamadas de


métodos construida de acuerdo a la sintaxis del lenguaje que devuelve un valor.
El tipo de dato del valor regresado por una expresión depende de los elementos
usados en la expresión.

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


Operadores

Los operadores son qímbolos especiales que por lo com{tn se utilizan en


expresiones.

La tabla siguiente muestra los distintos tipos de operado¡'e§ que utiliza Java.

Operador Significado Ejemplo


Op eradores aritméticos

Suma a*h
Resta a-tr
* Multiplicación a*o
División a/b
* Módulo aVob

Operadores de asignación

Asignación a:b
+= Suma y asignación a*=b(a:a+b)
Resta y asignación a -=b (s:a - b)
rk= Multiplioaoión y asignación a*:b(a:a*b)
División y asignación a /b (a:a / b)
$= Módulo y asignacién aYob (a:aYob)

Operadores relacisnales

Igualdad a=:b
!= Distinto , a !=b

Menor que a<b


Mayor que a>b
Menor o igual que ad:b
>= Mayor o igual que a):b
Operadores especiales

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


++ Incremento a++ (postincremento)
**a (preincremento)
. Decremento a-' (postdocrernento)
--a (predecremento)
(tipo)expr Cast a: (int) b

+ Concatenación de cadenas a=ttcadttt*t'cad2tt


- Acceso a variables Y métodos a: obj.varl
() Agrupacién de exPresiones a:(a+b)*c

La tabla siguiente muestra la precedencia asignada a los operadores, éstos son


listados en orden de precedencia.

Los operadores en la m¡sma fila tienen igual precedencia

Operador Notas

.[0 Los corchetes se utilizan para los


arreglos

++ !- ! es el NOT lÓgico Y - es el
complemento de bits

new (tipo)expr new se úilizapara crea'r


instancias de clases

*I % Multiplicativos

+- Aditivos

=: !- Igualdad

il:,.:r:::'ll".'"nu,
¡ OR inclusivo (entre bits)

&,&, AND lógico

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


Otr{ lógiocr

Conr"lloional

Asignaoión

Todos los operadores b¡narios que tienen la misma prioriciad (excepto los
operadores de asignación) son evaluados de izquierda a derecha.

Los operadores de asignación son evaluados de derecha a izquierda"

3)Variables y tipos de datos

Las variables son localidades de memoria en las que pueden almacenarse datos.
Cada una tiene un nombre, un tipo y valor" Java tiene tres tipos de variables: de
instancia, de clase y locales.

. Variables de instancia.

Se utilizan pava definir los atributos de un objeto.

. Variables de clase.

Son similares a las variables de instancia, con la excepción de que sus


valores son los mismos para todas las instancias de la clase"

. Variable Iocales.

Se declaran y se utilizan dentro de las definiciones de los métodos.


* A diferencia de otros lenguajes, Java no tiene variables globales, es decir ,

variables que son vistas en cualquier parte del programa.

Java es un lenguaje "fuertemente tipeado o tipificado" por lo que es necesario


especificar el tipo de dato para cada una de las variables que se vayan a utilizar
en un programa. El nornbre de la variable debe de ser un identificador válido, y se
usa para referirse a los datos que contiene una variable.

El tipo de una variable determina los valores que puede almacenar y las
operaciones que se pueden hacer sobre ella. Para dar a una variable un tipo y un
nombre, se escribe una declaración de una variable, que tiene la siguiente forma:

TipoDato nom breVariable;

Ej.

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


String nombre; // variable de tipo String
int edad; ll variable de tiPo int
Punto p; llvariable del tiPo Punto
Se pueden escribir varios nombres de variables del mismo tipo en una sola línea,
int x, y, z;
String nombre, apellido;
También se puede asignar un valor inicial a las variables al momento de crearlas,
String nombre, apellido="MiApellido";
int edad = 24;

Las variables en Java pueden Ser uno de los siguientes tipos:

4)Tipo primitivo.

Una variable de típo primitivo contiene un solo valor del tarnaño y formato
apropiado de su tipo: un nÚmero, un carácter, o un valor booleano.

La tabla siguiente lista los tipos de datos primitivos soportados por Java.

Tipo Descripción Tamaño/Formato

Núnteros enteros

byte Entero byte B-bit 2's

short Entero corto 16-bit 2's

inL Entero 32-bitz',s

long Entero largo 64-bit Z',s

Núnteros reales

float Punto flotante 32-bitLEEE 754

double Punto flotante de doble presición 64-bit LEEE 754

Otros ti¡tos

ch,ar Un solo carácter i 6-bit caracteres Unicode

booiean Un valor booleano .true o false

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


7

se considera
En Java, cualquier numérico con punto flotante automáticamenteuF'al
double. Para que sea considerado float se agrega una letra "f'o final d'el
valor.

double d = 10.50;
float f = 10.50F;

Referencia.

Los arregtos, las clases y las interfaces son del tipo referencia. El valor de una
variable del tipo referencia es una dirección de un conjunto de valores
representados por una var¡able.

Las referencias en Java no son como en C++, éstas son identificadores de


instancias de alguna clase en particular.

Ej.

String cad; //referencia a un objeto de la clase String


Punto p; //feferencia a un objeto de la clase Punto
int[] var-arreglo; //referencia a un arreglo de enteros

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


RANGO
NOMBRE TIPO OCUPA
APROXIMADO

byte Entero 1 byte -128 a 127

short Entero 2 bytes -32768 a 32767

int Entero 4 bytes 2*10s

long Entero I bytes Muy grande


TIPOS PRIMITIVOS
Decimal
(sin métodos; no son float 4 bytes Muy grande
sirnple
objetos; no necesitan
una invocación Para Decimal
double B bytes Muy grande
ser creados) doble

Carácter
char 2 bytes
simple

Valor true o
boolean 1 byte
false

IPOS DE String (cadenas de texto)


Tipos de la biblioteca
DATOS Muchos otros (p.ej. Scanner, TreeSet,
estándar de Java
EN JAVA Arraylist...)

Tipos definidos Por el Cualquiera que se nos ocurra, por ejemplo


programador / usuario Taxi, Autobus, Tranvia

Serie de elementos o formación tipo vector o


arrays matriz. Lo consideraremos un objeto especial
que carece de métodos.
TIPOS OBJETO
(con métodos, Byte
necesitan una
invocación para ser Short

creados) lnteger
Tipos envoltorio o
Long
wrapper (Equivalentes
a los tipos prim¡tivos Float
pero como objetos.)
Double

Character

Boolean

Autor: Alejandro Fernando Rojas Barja. Fundamentos de prograrnación


7

Unidad 4: Estructuras de control

4.l.Sentencia

Una instrucción o sentencia representa la tanea más sencilla que se puede realizar
en un programa.

4.l,l.Sentencias de expresión

Los siguientes tipos de expresiones pueden ser hechas dentro de una sentencia
terminando la expresión con punto y coma (;):
* Expresiones de asignación
* Cualquier uso de los operadores ++' V -*
* Llamada de métodos
* Expresiones de creación de objetos

Esta clase de sentencias son llamadas sentencias de expresión.

Ej.

8933.234; // asignación
valorA =
valorA++; // incremento
System.out.println(valorA); /i llamada a un método
lnteger objlnt = new Integer(4); ll ueaciÓn de objetos

4.l.2.Sentencias de declaración de variables

Las sentencias de declaración de variables se utilizan para declarar variables.

Ej.

int bValue;
double aValue = 8933.234;
String varCad;

4.l.3.Sentencias de control de fluio

Las sentencias de control de flujo determinan el orden en el cual serán ejecutadas


otro grupo de sentencias. Las sentencias tTy forson ejemplos de sentencias de
control de flujo.

4.2.Bloque de sentencias

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


Un bloque es un grupo de cero o más sentencias encerradas entre llaves ( { V } ).
Se puede poner un bloque de sentencias en cualquier lugar: en donde se pueda
poner una sentencia individual.

Las sentencias de control de flujo se pueden utilizar para ejecutar sentencias


condicionalmente, para ejecutar de manera repetida un bloque de sentencias y en
general para cambiar la secuencia normal de un prqgrama.

4.2.1.Estructuras de decision: simples, multiples.

. La sentencia if
La sentencia if permite llevar a cabo la ejecución condicional de sentencias.

if ( Expresion ){
sentencias;
)

Se ejecutan las sentencias si al evaluar la expresión se obtiene un valor


booleano true.

if ( Expresion ){
sentenciasA;
)
else{
sentenciasB;
)

Si al evaluar la expresión se obtiene un valor booleano true se ejecutarán


las sentenciasA, en caso contrario se ejecutarán las sentenciasB.

. La sentencia switch

Cuando se requiere comparar una variable con una serie de valores


díferentes, puede utilizarse Ia sentencia switch, en la que se indican los
posibles valores que puede tomar la variable y las sentencias que se tienen
que ejecutar sí es que la variable coincide con alguno de dichos valores.

switch( variable ){
case valorl:
sentencias;
break;
case valor2
sentencias;
break;

Autor:Alejandro Fernando Rojas Barja. Fundamentos de programación


7

case valorN:
sentencias;
break;
default:
sentencias;
)

Cada case ejecutará las sentencias correspondientes, c«:n base en el valor


de la variable, que deberá de evaluarse con valores de
tipo byte, char, short o int.

Si el valor de la variable no coincide con ningún valor, entonces se ejeeutan


las sentencias por default, sí es que las hay.

La sentencia break al final de cada ease transfiere el control al final de la


sentencia switch; de esta manera, cada vez que se ejecuta un case todos
los enunciados case restantes son ignorados y termina la operación
del switch

4.2.2.Estructuras iterativas: por conteo 0+, por condici'on 0*, por codici'on
1+ - para, mientras, repetir.

. El ciclo for

El ciclo for repite una sentencia, o un bloque de sentencias, mientras una


condición se cumpla. Se utiliza la mayoría de las veces cuando se desea
repetir una sentencia un determinado número de veces"

La forma general de la sentencia for es la siguiente;

for( inicialización ;cond ición ; i ncremento){


sentencias;
)
* En su forma más simple, la inicialización es una sentencia de asignación
que se utiliza para establecer una variable que controle el ciclo.
* La condición es una expresión que comprueba la variable que controla el
ciclo y determinar cuando salir del ciclo.
* El incremento define la manera en como cambia la variable que controla el
ciclo.

Los ciclos while y do-whi,le, al igual que los ciclos for repiten la ejecución de un
bloque de sentencias mientras se cumpla una condiciÓn específica.

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


. La sentenc¡a while

El formato de la sentencia while es la siguiente:

while (condición){
sentencias;
)

La condición es una condición booleana, que mientras tenga el


valor true permite que se ejecuten las sentencias correspondientes'

. La sentenc¡a do-while

Al contrario de los ciclos for y while que comprueban una condición en lo


alto del ciclo, el ciclo do-while la examina en la parte más baja del mismo.
Esta característica provoca que un ciclo do-while siempre se ejecute por lo
menos una vez.

Elformato de la sentencia do-while es el siguiente:

do{
sentencias;
)while (condición);

4.3.Comandos para las sentencias

. break

La sentencia break tiene dos usos. El primer uso es terminar un case en la


sentencia switch. EI segundo es forzar la terminación inmediata de un ciclo,
saltando la prueba condicional normal del ciclo.

. cont¡nue

La sentencia continue es similar a la sentencia break Sin embargo, en vez


de forzar la terminación del ciclo, continue forza la siguiente iteración y
salta cualquier código entre medias.

. return

Se utiliza Ia sentencia return para provocar la salida del método actual; es


decir, return provocará que el programa vuelva al código que llamó al
método.

La sentencia return puede regresar o no un valor. Para devolver un valor,


se pone el valor después de Ia palabra clave return.

Autor: Alejandro Fernando Rojas Barja. Fundamentos de prograrnaciÓn


7

return valor;

El tipo de dato.del valor regresado debe ser e! mismo que el que se


especifica en la declaración del método.

Cuando un rnétodo es declarado void, el método nCI regresa ningún valor.

return;

Unidad 5: Estructuras de datos básicas

5.1¿Qué es un array?

-Un array es un tipo de estructura de datos, es una secuencia de ítems del mismo
-tipo.

-Cada ítem es accesible con su índice.

-El tipo de los items es el mismo en todo el array. Puede ser básico (int, char,...) o
de objetos (String, A{umno, Word,...).

S.2.Declaración de una variable de tipo array:

-Declarar una variable de tipo array

tipo[] nombre-variable

El tipo puede ser básico como int o de objeto como Stríng

. Por ejemplo:

- int[] values;

- double[] notas;

- String[] cadenas;

Un array eS un objeto, o Sea que las variables values, notas y cadenas son
variables de objeto.

S.3.Creación de un objeto array

-Para crear un objeto array:

- nom bre_variable = new ti po[n u mero*d e-elementos] ;

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


Por ejemplo, depués de declarar values y cadenas:

- values = new int[100]

Hemos creado una tabla de 100 elementos de tipo int. La variable de objeto values
apunta al prinier elemento.

- cadenas = new String[10];

-También podemos declarar y crear el array al mismo tiernpo:

- int[] values = new int[100] ;

- String[] cadenas = new String[10];

-También, se puede crear y inicializar un array a la declaración:

- StringI alumnos = {"eva","cristina","sergi","teresa"};

Se ha creado un array con 4 cadenas

- double[] notas = {10 ,5.5 }


Se ha creado un array con 2 double

-lncorrecto (error de compilación):

- String[] alumnos;

- alumnos = {"eva","cristina","sergi","teresa"};

-Podemos declarar un array de cualquier tipo de objeto:

- Alumno[] alumnos = new Alumnos[10];

Los elementos del array, por ejemplo alumnos[7], tienen como valor null.

5.3. Acceso a los elementos del array

-El tamaño del array se puede saber mediante la "variable" length.

-El tamaño de un array es fijo, no se puede cambiar.

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


-El primer elemento del array está al índir:e ü, el siguiente a[ índice length-1.

-Si intentamos acceder a.un elemento mecii¿lnte un índice fuera de rango,


tendremos un ArraylndexOutOfBoundException.

. Un ejemplo

- int[] numeros = new int[S];


- System.out.println(numeros.length); // devuelve 5

- numeros[0]=4;
- numeros[4]=33' ll último elemento del array
- numeros[5]=6' ll fuera de rango: excepción!

-Se pueden utilizar los elementos del array corno simples variables:

- notas[O] = notas[1] + 3;
- System.out.println( alumnos[3].length0 );

5.4.anRlvs (ARREG Los) MUtrrDrM ENSToNALES

Vamos a realizar un repaso sobre conocimientos que debemos tener relativos a


arrays multidimensionales. En Java es posible crear arrays con más de una
dimensión, pasando de la idea de lista, vector o matriz de una sola fila a la idea de
matriz de m x n elementos, estructuras tridimensionales, tetradimensionales, etc.
La sintaxis será:

I
Tipo_de_variable[ ]l ]... t Nombre_del_array = new
Tipo_de_variable[dimensión 1 ][dimensión2] " .. [dimensiónN];

También podemos alternativamente usar esta declaración:

Tipo_de_variable[ ][ ] ... t I Nombre_del_array;


Nombre-del-array = new Tipo-de*variable[dimensión1][dimensión2]...fclimensiónN];

El tipo de variable puede ser cualquiera de los admitidos por Java y que ya ha sido
explicado. Ejemplos de declaración e inicialización con valores por defecto de
arrays, usando los distintos tipos de variables Java, serían:
- bytetl[] edad = new byte[4][3];

- short l[] edad = new short[4][3];

- int[][] edad = new int[4][3];

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


long[][] edad = new long[4][3];

float[]U estatura = new float[31[2]i

doublelJl] estatura = new doublet3lt2l;

boolean[][] estado = new boolean[s]lal;

char[][] sexo * new ohar[2][1];

String[][] nombre = new Stringlzlltl;

ambién, podríamos asignar contenido de esta otra forma, como ya se ha explicado


anteriormente:

int[][] alum nosfxniveleid ioma = {{7, 1 4, 8, 3},{6,19,7,21,{3, 1 3,4, 1 }};

La representación gráfica que podríamos asociar a esta asignación de datos sería esta
matriz:

l4
lg
t3 Il

5.5 Arreglos multidimens¡onales

Para terminar en cuanto a mult¡d¡mensionalidad, veamos casos de declaraciones


con más de dos dimensiones. Para ello supongamos que estamos realizando un
"conteo de coChes", es decir, que estamos contando los coches que pasan por un
determinado lugar en un periodo de tiempo que puede ser un día, varios días, varios
meses, etc. La forma de declarar e§os arrays podría ser la siguiente:

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


il' ',i
Duracüón del
i 'conteo.
rl:
,

Array de una dimensión iratfi] nc: new int[24];


Un día (hora)

Varios días
Anay de dos dimensiones int[]fi nc : new int[2a][31];
(hora y día)

Array de tres dimensiones


Varios meses inttlil[] nc: new intl2alPllflzl;
(hora, día y mes)

Varios años
Array de cuatro dimensiones
Inttl,tl tl tl nc : new intl24)l3r)lr21L299el;
(hora, día, mes y año)
Array de cinco dirnensiones Int[][][][][] nc:
Varios siglos new int[24]t3 1 l[1 2][2e99]1211;
(llora, día, mes, año y siglo)

Unidad 6: Tipos de datos abstractos

6.l.Clases y objetos

Objeto
Al igual que los objetos del mundo real, los objetos de software tienen
un ástado y un comportam¡ento. El estado de los objetos se determina
a part¡r de una o más var¡ablesy el comportamiento con la
implementación de métodos.

La siguiente figura muestra la representación cómun de los objetos de


software
t{*r¡*bt$t
{ürt*ún}

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programaciÓn


Como se observA en la figura, todos los objetos tienen una parte
pública (su comportamiento) y una pafte privada (su estado). En este
taso, hii¡mos una vista transversal pero desde el mundo exterior, el
objeto se observará como una esfera.

. Clase

Una clase está formada por los métodosy las variables que definen las
características cómunes a todos los objetos de esa clase. Precisamente
la clave de la OOP está en abstraer los métodos y los datos comunes a
un conjunto de objetos y almacenarlos en una clase.

Una clase equivale a la generalización de un tipo específico de objetos.


Una instancia es la concreción de una clase'

Clase X

En la figura anterior, el objeto A y el objeto B son instancias de la


clase X.

Cada uno de Ios objetos tiene su propia copia de las variables


definidas en la clase de la cual son instanciados y comparten la misma
implementación de los métodos.

6.2,Mensajes y métodos

El modelado de objetos no sólo tiene en consideración Ios objetos de un


sistema, sino también sus interrelaciones.

. Mensaje

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programaciÓn


7

Los objetos interactúan enviándose mensajes unos a otros. Tras la


recepción de un mensaje el objeto actuará. La acción puede ser el
envío de otros mensajes, el cambio de su estado, o Ia ejecución de
cualquier otra tarea que se requiera que haga el objeto.

. Método

Un método se imptementa en una clase, y detenmina cómo tiene


que actuar el objeto cuando recibe un mensaje.

Cuando un objeto A necesita que el olljeto B ejecute alguno de sus


métodos, el objeto A le manda un mensaje al objeto B.

Al recibir el mensaje del objeto A, el objeto B ejecutará el método


adecuado para el mensaje recibido.

6.3. Encapsulatniento

Como se puede observar de los diagramas, las variables del objeto se


localizan en el centro o núcleo del objeto. Los métodos rodean y
esconden el núcleo del objeto de otros objetos en el programa.-Al
empaquetamiento de las variables de un objeto con la protección de sus
métodos se le llama encapsulamiento. Típicamente, el encapsulamiento
es utilizado para esconder detalles de la puesta en práctica no
importantes de otros objetos. Entonces, los detalles de la puesta en
práctica pueden cambiar eh cualquier tiempo sin afectar otras partes del
programa.

El encapsulamiento de variables y métodos en un componente de


software ordenado es, todavía, una simple idep poderosa que provee dos
principales beneficios a los desarrolladores de software:

. Modularidad, esto es, el código fuente de un objeto puede ser


escrito, así como darle mantenimiento, independientemente del

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


código fuente de otros objetos. Así mismo, un objeto puede ser
transferido alrededor del sistema sin alterar su estado y conducta.
. Ocultamiento de la información, es decir, un objeto tiene una
"interfaz publica" que otros objetos pueden utilizar para
comun.icarse con é1. Pero el objeto puede mantener información y
métodos privados que pueden ser cambiados en cualquier tiempo
sin afectar a los otros objetos que dependan de ello'

Los objetos proveen el beneficio de ta modutaridad y el ocultamiento de


la infoimación. Las clases proveen el beneficio de la reutilización. Los
programadores de software utilizan la misma clase, y por lo tanto el
mismo código, una y otra vez para crear muchos objetos.

En las implantaciones orientadas a objetos se percibe un objeto como un


paquete de datos y procedimientos que se pueden llevar a cabo con estos
datos. Esto encapsula los datos y los procedimientos. La realidad es
diferente: tos atributos se retacionan al objeto o instancia y los métodos a
la clase. éPor qué se hace así? Los atributos son variables comunes en
cada objeto de una clase y cada uno de ellos puede tener un valor
asociadO, para cada variable, diferente al que tienen para esa misma
variable los demás objetos. Los métodos, por su parte, pertenecen a la
clase y no se almacenan en cada objeto, puesto que sería un desperdicio
almacenar el mismo procedimiento varias veces y ello va contra el
principio de reutilización de código,

(sin
l;;;',. l;;;;,;' modificador)
;i
I

Clase
[-'i [ -;; I
SI

t; ubclase
ie 1 mismo ;:.""."F-[ -;; -
l-
r'.*'-*"
SI

No-Subclase ert
el mismo paquete
Subcfase en
r;-[ i

I
I

--i
I

l-
[;-i NOt i
diferente sr/No (x) I
paquete I I
i
I

No-Subclase en I

FI
diferente NO
paquete I
I
(Universo) I

Fundamentos de Programación. Dia l aldia 3

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


Estructuras de control. Dia 4 al dia 6

Estructuras de datos básicas. Dla 7 y dia 9

Tipos de datos abstractos Dia 1"0 y dia 1-2

Descomposicion funcional. Dias restantes

Dia I
1) Pedir el radio de un círculo y calcular su área' A=Pl*r^2.
Z) Declara un String que contenga tu nombre, después muestra un mensaje de bienvenida
por consola. por ejemplo: si introduzco "Éernando", me aparezca "Bienve¡lido Fernan«1o".

Dia 2 (Del ejercicio 1 al 3, traer escrito o impreso para entregar)


1) Pedir el radio de una circunferencia y calcular su longitud.
2\ Declara dos variables numéricas (con el valor que desees), rnuestra por consola la surna,
resta, multiplicación, división y módulo (resto de la división)'
3) Dadas las declaraciones:

int fl ,s I";
dnubtre d # l.ffi;
y suponiendo que cada instrucción es independiente, icuál es el resultado de cada una de
estas expresiones (el valor que se asigna)??

a=46H§+4*4-7;
r=45+43H5*(21 e§3fi7)i
t=45+45*5BHa-*;
d=1.§*3+(++d);
¡l = L"§ + 3 + d++;
aff=3ia+3;
4l Lee un número por teclado que pida el precio de un producto (puede tener decimales) y
calcule el precio final con lVA. El IVA sera una constante que sera del Zt%o.
5) Escribe un programa en C++ que lea del teclado un número (real) de grados Fahrenheit y
lo convierta a Celsius mostrándo el resultado en la pantalla.
üC*Slgx{uP-3}}
6) Escribe la siguiente expresión en java (usa los paréntesis que sean estrictamente
necesarios):

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programaciÓn


7) Construir un programa que calcule y muestre por pantalla las raíces de la ecuación de
segundo grado de coeficientes reales. Los valores de los coeficientes se indican en el
propio código del programa rnediante sentencias de asignación a variables reales' Siendo
la ecuación de segundo grado de la forma: f(x)=¿'* 2 +b'x +c, entonces las expresiones de
las raices correspondientes se indican a continuación:

frr =
- &+ ,rF -4;;
'r¡
?

if,! =
* ü- \m:4 *-
I .r¡

Nota: En Java no existe un operador que calcule la raiz cuadrada de una expresión
para el cálculo de la raíz cuadrada puede emplearse una llamada al método Math'srt(x).

Dia 4

1) Pedir un número e indicar si es positivo o negativo.


Z) Pide por teclado un número entero positivo (debemos controlarlo) y muestra el número
de cifras que t¡ene. Por ejemplo: si introducimos 1250, nos muestre que tiene 4 cifras.
Tendremos que controlar si tiene una o mas cifras, al mostrar el mensaje.

Dia 5 (Del ejercicio 1 al 3, traer escrito o impreso para entregar)


1) Pedir dos números y decir cual es el mayor o si son iguales'
2l Pedir un número entre 0 y 9.999 y decir cuantas cifras tiene'
3) Descomponer un numero, y multiplicar sus dígitos e imprimir dicho resultado
4) Pedir una hora de la forma hora, minutos y segundos, y mostrar la hora en el segundo
siguiente. Hora Minuto Segundo
5) Leer números hasta que se introduzca un 0. Para cada uno indicar si es par o impar.
6) Crea una aplicación que nos pida un día de la semana y que nos diga si es un dia laboral o
no. Usa un switch para ello.
7) Volver a realizar el ejercicio 3) y 5) con todos los ciclos posibles(para, mientras, repet¡r).

Dla 7
1) Leer 5 números y mostrarlos en el mismo ordén introducido.
7l Crear una tabla bidimensional de tamaño 5x5 y rellenarla en forma ascendente

Dia 8 (Del ejercicio t al 3, traer escrito o impreso para entregar)


1) Leer 5 números y mostrarlos en orden inverso al introducido.
2l Diseñar una aplicacíón que declare una tabla de L0 elementos enteros. Leer mediante el
teclado 8 números. Después se debe pedir un número y una posíción, insertarlo en Ia
posición indicada, desplazando los que estén detrás.

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


7

3) Crear y cargar dos matrices de tamaño 3x3, sumarlas y mostrar su s,L¡ma.


4). Leer por tectado una tabla de L0 elementos numéricos enteros y una posición (entre 0 y 9)
Eliminar el elemqnto situado en la posición dada sin dejar huecos.
5) Leer dos series de 10 enteros, que estarán ordenados crecientemente. Copiar (fusionat-)
las dos tablas en una tercera, de forma que sigan ordenados.
6) Crear y cargar una tabla de tamaño 3x3, 'trasponerla y mostrarla.
7l utilizando dos tablas de tamaño 5x9 y 9x5, calcular el producto de esta, e imprinrir dicho
pr'oducto en forma no.rmaly caracol
Dia I"0

L) Crea una clase llamada Cuenta que tendrá los siguientes atributos: titular y cantidad (puede
tener decimales).

El titular será obligatorio y la cantidad es opcional. Crea dos constru,ctores que cumpla lo
anterior.

Crea sus métodos get, set y toString.

Tendrá dos métodos especiales:

-ingresar(double cantidad): se ingresa una cantidad a la cuenta, si la cantidad introducida


es negativa, no se hará nada.

-retirar(double cantidad): se retira una cantidad a la cuenta, si restando la cantidad actual


a la que nos pasan es negativa, la cantidad de la cuenta pasa a sen0'

Dia 11 (Del ejercicio I al 2, traer escrito o impreso para entregar)


1) Crear una clase Libro que contenga los siguientes atr¡butos:
_ ISBN

- Titulo
- Autor
- Número de páginas

Crear sus respectivos métodos get y set correspondientes para cada atributo. Crear el
método toStríngfl para mostrar la ínformación relativa al libro con el siguiente formato:

"El libro con ISBN creado por el autor tiene páginas"

En el fichero main, crear 2 objetos Libro (los valores que se quieran) y mostrarlos por
pantalla.

Por último, indicar cuál de los 2 tiene más páginas.

2l Haz una clase llamada Persona que siga las siguientes condiciones:

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


Sus atributos son: nombre, edad, DNl, sexo (H hombre, M mujer), peso y altura. No
queremos que se accedan directamente a ellos. Piensa que modifícador de acceso es el
más adecuado, también su tipo. Si quieres añadir algún atributo puedes hacerlo.
Por defecto, todos los atributos menos el DNI serán valores por defecto según su tipo (0
números, cadena vacía para String, etc.). Sexo sera hombre por defecto, usa una constante
para ello.
Se implantaran varios constructores:
. Un constructor por defecto.
r Un constructor con el nombre, edad y sexo, el resto por defecto.
.Un constructor con todos los atributos como parámetro.
Los métodos que se implementaran son:
- calcularlMCfl: calculara si la persona esta en su peso ideal(peso en
kg/(altura^2 en m)), si esta fórmula devuelve un valor menor que 20, la función
devuelve un -1, si devuelve un número entre 20 y 25 (incluídos), significa que esta
por debajo de su peso ideal la función devuelve un O y si devuelve un valor mayor
que 25 significa que tiene sobrepeso, la función devuelve un 1. Te recomiendo que
uses constantes para devolver estos valores.
- esMayorDeEdadfl: indica si es mayor de edad, devuelve un booleano.

comprobarSexo(char sexo): comprueba que el sexo introducido es


correcto. 5i no es correcto, sera H. No sera visible al exterior.

- toStrinefl: devuelve toda la información delobjeto.

- generaDNlfl: genera un número aleatorio de 8 cifras, genera a partir de


este su número su letra correspondiente. Este método sera invocado cuando se construya
el objeto. Puedes dividir el método para que te sea más fácil. No será visible al exterior.

- Métodos set de cada parámetro, excepto de DNl.

Ahora, crea una clase ejecutable que haga lo siguiente:


. Pide por teclado el nombre, la edad, sexo, peso y altura.
. Crea 3 objetos de la clase anterior, el prímer objeto obtendrá las anteriores variables
pedidas por teclado, el segundo objeto obtendrá todos los anteriores menos el peso y
la altura y el último por defecto, para este último utiliza los métodos set para darle a
los atributos un valor.
. Para cada objeto, deberá comprobar si esta en su peso ídeal, tiene sobrepeso o por
debajo de su peso idealcon un mensaje.
' lndicar para cada objeto sí es mayor de edad.
. Por últímo, mostrar la información de cada objeto.
Puedes usar métodos en la clase ejecutable, para que os sea mas fácil.

3) Crearemos una clase llamada Serie con las siguientes características:

I Sus atributos son titulo, numero de temporadas, entregado, genero y creador.

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación


r por defecto, el numero de temporadas es ule 3 temporadas y entregado false' El resto de
. atributos serán valores por defecto según e[ tipo del atributo

. Los constructores que se implementaran serán:

. Un constructor por defecto'

. Un constructor con el titulo y creador'. El resto por defecto'

'. Un constructor con todos los atributos, excepto de entregado.

. Los métodos que se implementara serán:

. Métodos get de todos los atributos, excepto de entregado'

, Métodos set de todos los atributos, excepto de entregado.


. Sobrescribe los métodos toString.

Crearemos una clase Videoiuego con las siguientes características:

. Sus atributos son titulo, horas estimadas, entregado, genero y compañia.


. por defecto, las horas estimadas serán de 10 horas y entregado false. El resto de atributos
serán valores por defecto según el tipo del atributo.

. Los constructores que se inrplementaran serán:

. Un constructor por defecto.

. Un constructor con el titulo y horas estimadas. El resto por defecto.

. Un constructor con todos los atributos, excepto de entregado'

. Los métodos que se implementara serán:

. Métodos get de todos los atributos, excepto de entregado.


. Métodos set de todos los atributos, excepto de entregado.
. Sobrescribe los métodos toString.

Como vemos, en principio, las clases anteriores no son padre-hija, pero si tienen en común,
por eso vamos a hacer una interfaz llamada Entregable con los siguientes métodos:

¡ entr€gár0: cambia el atributo prestado a true.


. devolver0: cambia el atributo prestado a false.
. isEntregado(): devuelve el estado del atributo prestado'
. Método compareTo (Object a), compara las horas estimadas en los videojuegos y en
las series el numero de temporadas. Como parámetro que tenga un objeto, no es
necesario que implementes la interfaz Comparable. Recuerda el uso de los casting de
objetos.

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programaciÓn


lmplementa los anteriores métodos en las clases Videojuego y Serie. Ahora crea una aplicación
ejecutable y realiza lo siguiente:
. Crea dos arrays, uno de Series y otro de Videojuegos, de 5 posiciones cada uno,

. Crea.un objeto en cada posición clel array, con los valores que desees, puedes usar
distintos constructores.

r Entrega algunos Videojuegos y series con el método entreBar0.

' Cuenta cuantos Series y Videojuegos hay entregados. Al contarlos, devuélvelos'

. por último, indica el Videojuego tiene más horas estimadas y la serie con mas
temporadas. Muestralos en pantalla con toda su información (usa el método
tostr¡ng0).

4) Haz una clase llamada Password que s¡ga las siguientes condiciones:

. Que tenga los atributos longitud y contraseña . Por defecto, la longitud sera de 8.
. Los constructores serán los siguiente:

- Un constructor Por defecto.


- Un constructor con la longitud que nosotros le pasemos. Generara una
contraseña aleatoria con esa lclngitud'

. Los métodos que implementa serán:

- esFuertefl: devuelve un booleano si es fuerte o no, para que sea fuerte debe
tener mas de 2 mayúsculas, mas de 1 minúscula y mas de 5 números.
- g¡nerarPasswordfl: Benera la contraseña del objeto con la longitud que
tenga.
- Método get para contraseña y longitud.
- Método set Para longitud'

Ahora, crea una clase clase ejecutable:

. Crea un array de Passwords con el tamaño que tu le indiques por teclado.


r Crea un bucle que cree un objeto para cada posición delarray.

' lndica también por teclado la longitud de los Passwords (antes de bucle).

' Crea otro array de booleanos donde se almacene si el password del array de
Password es o no fuerte (usa el bucle anterior)'

. Al final, muestra la contraseña y sí es o no fuerte (usa el bucle anterior). Usa


este simple formato:

contraseña1 valor booleanol"

contraseña2 valor bololeano2

Autor: Alejandro Fernando Rojas Barja. Fundamentos de programación

Anda mungkin juga menyukai