Table Of Content1
FUNDAMENTOS
DE
PROGRAMACIÓN
Moisés
Valenzuela
Gutiérrez
2
2009 Moisés Valenzuela Gutiérrez
Portada diseño: Celeste Ortega (www.cedeceleste.com)
Edición cortesía de www.publicatuslibros.com. Debe
reconocer los créditos de la obra de la manera especificada por
el autor o el licenciador (pero no de una manera que sugiera que
tiene su apoyo o apoyan el uso que hace de su obra).
No puede utilizar esta obra para fines comerciales. Si altera o
transforma esta obra, o genera una obra derivada, sólo puede
distribuir la obra generada bajo una licencia idéntica a ésta. Al
reutilizar o distribuir la obra, tiene que dejar bien claro los
términos de la licencia de esta obra.
Alguna de estas condiciones puede no aplicarse si se obtiene el
permiso del titular de los derechos de autor. Nada en esta
licencia menoscaba o restringe los derechos morales del autor.
Publicatuslibros.com es una iniciativa de:
Íttakus, sociedad para la información, S.L.
C/ Millán de Priego, 41, P 14, 1 N
23004 Jaén-España
Tel.: +34 953 08 76 80
www.ittakus.com
3
INTRODUCCION
Este
libro
está
dirigido
a
estudiantes
que
cursen
Ciclos
Formativos
de
Grado
Superior
en
Administración
de
Sistemas
Informáticos
y
Desarrollo
de
Aplicaciones
Informáticas.
Concretamente
está
orientado
para
la
asignatura
de
primer
curso
Fundamentos
de
Programación
,
habiendo
parte
de
la
asignatura
que
se
orienta
hacia
el
desarrollo
de
la
programación
orientada
a
objetos.
En
este
libro
se
detallan
las
características
básicas
de
la
programación
orientada
a
objetos
utilizando
para
ello
el
lenguaje
de
programación
y
orientado
a
objetos
Visual
C#
que
se
encuentra
dentro
de
paquete
.NET
perteneciente
a
la
compañía
Microsoft
.
Se
detalla
la
definición
de
clase
y
objeto
detallado
mediante
ejemplos
,
así
como
todas
las
sentencias
iterativas
y
simples
necesarias
para
la
implementación
de
programas.
También
se
detalla
la
creación
de
constructores
y
por
ultimo
una
propiedad
propia
de
los
lenguajes
orientados
a
objetos
como
es
la
herencia.
4
INDICE.
TEMA
1.
LENGUAJE
C#.
• 1.1.‐
PROGRAMACION
ORIENTADA
A
OBJETOS.
• 1.2.‐
BASES
SINTACTICAS
DE
C#.
• 1.3.‐
TIPOS.
• 1.4.‐
DECLARACION
DE
VARIABLES.
• 1.5.‐
SENTENCIA
IF….ELSE.
• 1.6.‐
SENTENCIA
DO….WHILE.
• 1.7.‐
SENTENCIA
FOR.
• 1.8.‐
MATRICES.
TEMA
2.
CLASES
Y
OBJETOS.
• 2.1.
INTRODUCCION
A
CLASES.
• 2.2.
METODOS.
• 2.3.
DISEÑO
DE
UNA
CLASE
DE
OBJETOS.
TEMA 3. CONSTRUCTORES Y HERENCIA.
• 3.1.‐
CONSTRUCTOR.
• 3.2.‐
HERENCIA.
5
TEMA
1.
LENGUAJE
C#.
1.1.‐
PROGRAMACION
ORIENTADA
A
OBJETOS.
Clases
y
objetos.
Vamos
a
entrar
de
lleno
para
comprender
las
clases,
los
objetos
y
en
que
se
diferencian.
No
son
lo
mismo
las
clases
y
los
objetos.
Para
que
pueda
haber
un
objeto
debe
existir
previamente
una
clase,
pero
no
al
revés.
Ejemplo:
Tenemos
un
coche,
todos
ellos
tienen
una
serie
de
características
comunes:
tienen
un
motor,
ruedas,
un
volante,
chasis…..;
todos
funcionan
de
un
modo
parecido
para
acelerar,
frenar,
meter
las
marchas…;
sin
embargo,
cada
uno
de
ellos
es
diferente
de
los
demás,
puesto
que
cada
uno
es
de
una
marca,
modelo,
color,
numero
de
bastidor,
propiedades
que
lo
diferencian
de
los
demás,
aunque
una
o
varias
de
ellas
puedan
coincidir
en
varios
coches.
Diríamos
entonces
que
todos
los
coches
están
basados
en
una
plantilla,
o
un
tipo
de
objeto,
es
decir,
pertenecen
todos
a
la
misma
clase:
la
clase
coche.
Sin
embargo,
cada
uno
de
los
coches
es
un
objeto
de
esa
clase;
todos
comparten
la
interfaz,
pero
no
tienen
porque
compartir
los
datos
(marca,
modelo,
color,
etc).
Se
dice
entonces
que
cada
uno
de
los
objetos
es
una
instancia
de
la
clase
a
la
que
pertenece,
es
decir,
un
objeto.
Veamos
como
seria
esto
en
C#.
El
diseño
de
la
clase
Coche
sería
algo
parecido
a
esto
(aunque
más
ampliado):
class
Coche
{
public
Coche(string
marca,
string
modelo,
string
color,
string
numbastidor)
{
this.Marca=marca;
6
this.Modelo=modelo;
this.Color=color;
this.NumBastidor=numbastidor;
}
public
double
Velocidad
{
get
{
return
this.velocidad;
}
}
public
double
velocidad=0;
public
string
Marca;
public
string
Modelo;
public
string
Color;
public
void
Acelerar
(double
cantidad)
{
//
Aquí
se
le
dice
al
motor
que
aumente
las
revoluciones
pertinentes,
y
…..
Console.WriteLine
(“Incrementando
la
velocidad
en
{0}
km/h”,
cantidad);
this.velocidad
=
cantidad;
}
public
void
Girar
(double
cantidad)
{
//Aquí
iría
el
código
para
girar
Console.WriteLine(“Girando
el
coche
{0}
grados
“,
cantidad);
7
}
}
Veamos
una
clase
con
un
método
Main
para
ver
como
se
comportaría
esta
clase:
class
EjemploCocheApp
{
static
void
Main()
{
Coche
MiCoche=new
Coche(“Peugeot”,
“306”,
“Azul”,”15343534”);
Console.WriteLine(“Los
datos
de
mi
coche
son:”);
Console.WriteLine(“Marca:
{0}”,
MiCoche.Marca);
Console.WriteLine(“Modelo:
{0}”,
MiCoche.Modelo);
Console.WriteLine(“Color:
{0}”,
MiCoche.Color);
Console.WriteLine(“Numero
de
bastidor:
{0}”,
MiCoche.Numbastidor);
MiCoche.Acelerar(100);
Console.WriteLine(“La
velocidad
actual
es
de
{0}
km/h”,
MiCoche.Velocidad);
MiCoche.Girar(45);
}
}
El
resultado
que
aparecería
en
la
consola
al
ejecutar
este
programa
seria
esta:
Los
datos
de
mi
coche
son:
Marca:
Peugeot
Modelo:
306
Color:
Azul
8
Numero
de
bastidor:
15343534
Incrementado
la
velocidad
en
100
km/h
La
velocidad
actual
es
de
100
km/h
Girando
el
coche
45
grados.
No
te
preocupes
por
no
entender
el
código,
ya
lo
iremos
viendo
largo
y
tendido.
Nos
fijamos
que
en
la
clase
es
donde
se
definen
los
datos
y
se
programan
todas
las
acciones
que
han
de
manejar
los
objetos
de
esta
clase.
Los
datos
son
Velocidad,
Marca,
Modelo,
Color
y
NumBastidor,
y
los
métodos
son
Acelerar
y
Girar.
Sin
embargo,
el
objeto,
MiCoche
(creado
en
la
primera
línea
del
método
Main)
no
define
absolutamente
nada.
Simplemente
usa
la
interfaz
diseñada
en
la
clase
(la
interfaz
de
una
clase
es
el
conjunto
de
métodos
y
propiedades
que
esta
ofrece
para
su
manejo).
Por
lo
tanto,
Coche
es
la
clase
y
MiCoche
un
objeto
de
esta
clase.
1.2.‐
BASES
SINTACTICAS
DE
C#.
Aplicación
básica
¡Hola
a
todos!
Como
primer
contacto
con
el
lenguaje,
nada
mejor
que
el
típico
programa
de
iniciación
“¡Hola
a
todos!”
que
lo
único
que
hace
al
ejecutarse
es
mostrar
por
pantalla
el
mensaje
¡Hola
a
todos!
Su
código
es:
1:
class
HolaMundo
2:
{
3:
static
void
Main()
4:
{
5:
System.Console.WriteLine(“¡Hola
a
todos!”);
6:
}
7:
}
Todo
el
código
escrito
en
C#
se
ha
de
escribir
dentro
de
una
definición
de
clase,
y
lo
que
en
la
línea
1:
se
dice
es
que
se
va
a
definir
una
clase
(class)
de
nombre
HolaMundo
cuya
definición
estará
comprendida
entre
la
llave
de
apertura
de
la
línea
2:
y
su
correspondiente
llave
de
cierre
en
la
línea
línea
7:
9
Dentro
de
la
definición
de
la
clase
(línea
3:)
se
define
un
método
de
nombre
Main
cuyo
código
es
el
indicado
entre
la
llave
de
apertura
de
la
línea
4:
y
su
respectiva
llave
de
cierre
(línea
6:)
Un
método
no
es
más
que
un
conjunto
de
instrucciones
a
las
que
se
les
asocia
un
nombre,
de
modo
que
para
posteriormente
ejecutarlas
baste
referenciarlas
por
su
nombre
en
vez
de
tener
que
rescribirlas.
La
partícula
que
antecede
al
nombre
del
método
indica
cuál
es
el
tipo
de
valor
que
se
devuelve
tras
la
ejecución
del
método,
y
en
este
caso
es
void
que
significa
que
no
se
devuelve
nada.
Por
su
parte,
los
paréntesis
colocados
tras
el
nombre
del
método
indican
cuáles
son
los
parámetros
que
éste
toma,
y
el
que
estén
vacíos
significa
que
el
método
no
toma
ninguno.
Los
parámetros
de
un
método
permiten
modificar
el
resultado
de
su
ejecución
en
función
de
los
valores
que
se
les
dé
en
cada
llamada.
La
palabra
static
que
antecede
a
la
declaración
del
tipo
de
valor
devuelto
es
un
modificador
del
significado
de
la
declaración
de
método
que
indica
que
el
método
está
asociado
a
la
clase
dentro
de
la
que
se
define
y
no
a
los
objetos
que
se
creen
a
partir
de
ella.
Main()
es
lo
que
se
denomina
el
punto
de
entrada
de
la
aplicación,
que
no
es
más
que
el
método
por
el
que
comenzará
su
ejecución.
Necesita
del
modificador
static
para
evitar
que
para
llamarlo
haya
que
crear
algún
objeto
de
la
clase
donde
se
haya
definido.
Finalmente,
la
línea
5:
contiene
la
instrucción
con
el
código
a
ejecutar,
que
lo
que
se
hace
es
solicitar
la
ejecución
del
método
WriteLine()
de
la
clase
Console
definida
en
el
espacio
de
nombres
System
pasándole
como
parámetro
la
cadena
de
texto
con
el
contenido
¡Hola
Mundo!
Nótese
que
las
cadenas
de
textos
son
secuencias
de
caracteres
delimitadas
por
comillas
dobles
aunque
dichas
comillas
no
forman
parte
de
la
cadena.
Por
su
parte,
un
espacio
de
nombres
puede
considerarse
que
es
para
las
clases
algo
similar
a
lo
que
un
directorio
es
para
los
ficheros:
una
forma
de
agruparlas.
1.3.‐
TIPOS.
Los
tipos
en
C#
se
clasifican
en:
tipos
valor
y
tipo
referencia.
Una
variable
de
un
tipo
valor
almacena
directamente
un
valor
(datos
en
general),
mientras
que
una
variable
de
un
referencia
lo
que
permite
almacenar
es
una
referencia
a
un
objeto
(posición
de
memoria
donde
está
el
objeto).
Por
ejemplo:
10