miércoles, 31 de enero de 2018

CLASE 9: DATOS TRANSPORTES

EJERCICIO DE HERENCIA DE LOS TRANSPORTES

Realizar un programa que imprima los datos de un coche, un tren y un avión con la clase vehículo utilizando herencia

#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;

class vehiculo{
public:
int dep, vel;
public:
void acelerar(){
cout << "Acelerar"<<endl;}
void frenar(){
cout << "Frenar"<<endl<<endl;}
};

class coche : public vehiculo{
private:
int puertas;
public:
coche(int dep1, int vel1, int puertas1){
dep=dep1;
vel=vel1;
puertas=puertas1;
}
void imprimir(){
cout<<"Deposito ="<<dep<<endl;
cout<<"Velocidad ="<<vel<<endl;
cout<<"Puertas ="<<puertas<<endl;
}
};

class tren : public vehiculo{
private:
int vagones;
public:
tren(int dep1, int vel1, int vagones1){
dep=dep1;
vel=vel1;
vagones=vagones1;
}
void imprimir(){
cout<<"Deposito ="<<dep<<endl;
cout<<"Velocidad ="<<vel<<endl;
cout<<"Vagones ="<<vagones<<endl;
}

};

class avion : public vehiculo{
private:
int puertas;
public:
void despegar(){
cout << "Despegar"<<endl;
}
void aterrizar(){
cout << "Aterrizar"<<endl;
}
avion(int dep1, int vel1, int puertas1){
dep=dep1;
vel=vel1;
puertas=puertas1;
}
void imprimir(){
cout<<"Deposito ="<<dep<<endl;
cout<<"Velocidad ="<<vel<<endl;
cout<<"Puertas ="<<puertas<<endl;
}
};

main()
{
coche a1(80,180,2);
tren a2(100,90,7);
avion a3(100,190,1);

cout << "Coche" << endl;
a1.imprimir();
a1.acelerar();
a1.frenar();

cout << "Tren" << endl;
a2.imprimir();
a2.acelerar();
a2.frenar();

cout << "Avion" << endl;
a3.imprimir();
a3.acelerar();
a3.frenar();
a3.despegar();
a3.aterrizar();

getch();
}

CLASE 8: EJERCICIO

EJERCICIO DATOS DE UN COCHE

Realizar un programa que solicite al usuario los datos de coche (adaptar método) si el modelo del auto es anterior al 2000.
Va velocidad seran 20 * dibujados,velocidad maxima sera 120km/h, aceleracion desconocida.
Si el modelo del auto es mayor al 2000 si velocidad sera 50 *, velocidad máxima 300 km/h, aceleración 10km/s.
Realize un programa qu ingrese los datos, salga la especificacion, y que salga el programa con 0

#include <conio.h>
#include <iostream>

using namespace std;

class coche
{
private:
string matricula;
string marca;
int modelo;
int numerodepuertas;
public:
coche(string matricula1, string marca1, int modelo1, int numerodepuertas1)
{
matricula=matricula1;
marca=marca1;
modelo=modelo1;
numerodepuertas=numerodepuertas1;
}

void verdatos()
{
cout<<"Matricula:\n"<<matricula<<"\n";
cout<<"Marca:\n"<<marca<<"\n";
cout<<"Modelo:\n"<<modelo<<"\n";
cout<<"Numero de puertas:\n"<<numerodepuertas<<"\n";
}

void velocidad(int numast)
{
cout<<"Velocidad"<<endl;
for(int i=0;i<numast;i++)
{
cout<<"*";
}
}
void velocidadmaxima(int velocmax)
{
cout<<"\n";
cout<<"Velocidad maxima"<<"\n"<<velocmax<<"km/h"<<endl;
}
void aceleracion(string acelrn)
{
cout<<"Aceleracion"<<"\n"<<acelrn<<"km/s"<<endl;
}
};

int main(){
int n;
do{
string matricula;
string marca;
int modelo;
int numerodepuertas;

cout<<"Ingrese la matricula del vehiculo:"<<endl;
cin>>matricula;

cout<<"Ingrese la marca:"<<endl;
cin>>marca;
 
cout<<"Ingrese el modelo:"<<endl;
cin>>modelo;
 
cout<<"Ingrese el numero de puertas:"<<endl;
cin>>numerodepuertas;
 
coche a1(matricula,marca,modelo,numerodepuertas);
 
if(modelo<=2000){
a1.velocidad(20);
a1.velocidadmaxima(120);
a1.aceleracion("desconocido"); }
  else{
a1.velocidad(50);
a1.velocidadmaxima(30);
a1.aceleracion("10"); }
 
  a1.verdatos();
 
cout<<"Presione 0 si desea salir, o cualquier numero para volver a ingresar datos\n";
cin>>n;
}while(n!=0);
}

CLASE 7: HERENCIA

HERENCIA SIMPLE

Herencia Simple La herencia en C++ es un mecanismo de abstracción creado para poder facilitar, y mejorar el diseño de las clases de un programa. Con ella se pueden crear nuevas clases a partir de clases ya hechas, siempre y cuando tengan un tipo de relación especial. En la herencia, las clases derivadas “heredan” los datos y la función miembro de las clases base, pudiendo las clases derivadas redefinir estos comportamientos (polimorfismo) y añadir comportamientos nuevos propios de las clases derivadas. Para no romper el principio de encapsulamiento (ocultar datos cuyo conocimiento no es necesario para el uso de las clases), se proporciona un nuevo modo de visibilidad de los datos/funciones: “protected”. Cualquier cosa que tenga visibilidad protected se comportará como pública en la clase Base y en las que componen la jerarquía de herencia, y como privada en las clases que NO sean de la jerarquía de la herencia. Antes de utilizar la herencia, nos tenemos que hacer una pregunta, y si tiene sentido, podemos intentar usar esta jerarquía: Si la frase <claseB> ES-UN <claseA> tiene sentido, entonces estamos ante un posible caso de herencia donde clase A será la clase base y clase B la derivada.
EJEMPLO:
#include<conio.h> 
#include <iostream>
using namespace std;

class Vehiculo {
public:
  void avanza() {}
};

class Coche : public Vehiculo {
public:
  void avanza(void)
     { cout << "Avanza coche." << endl; }
};

class Moto: public Vehiculo {
public:
  void avanza(void)
     { cout << "Avanza moto." << endl; }
};

int main()
{
  Moto t;
  Coche c;

  t.avanza();
  c.avanza();

  return 0;
}

HERENCIA  MÚLTIPLE
La herencia múltiple es el mecanismo que permite al programador hacer clases derivadas a partir, no de una sola clase base, sino de varias. Para entender esto mejor, pongamos un ejemplo: Cuando ves a quien te atiende en una tienda, como persona que es, podrás suponer que puede hablar, comer, andar, pero, por otro lado, como empleado que es, también podrás suponer que tiene un jefe, que puede cobrarte dinero por la compra, que puede devolverte el cambio. La herencia múltiple presenta el conocido problema del diamante. Esté problema surge cuando dos clases heredan de otra tercera y, además una cuarta clase tiene cómo padre a las dos últimas. La primera clase padre es llamada A y las clases B y C heredan de ella, a su vez la clase D tiene cómo padres a B y C. En esta situación, si una instancia de la clase D llama a un método de la clase A, ¿lo heredará desde la clase B o desde la clase C? Cada lenguaje de programación utiliza un algoritmo para tomar esta decisión

EJEMPLO:
#include <math.h>
#include <stdio.h>
class Circulo {
 float radio;
public:
 Circulo(float r) { radio = r; }
 float area() { return M_PI*radio*radio; }
};
class Mesa {
 float altura;
public:
 Mesa(float a) { altura = a; }
 float alto() { return altura; }
};
class MesaRedonda : public Mesa, public Circulo {
 int color;
public:
 MesaRedonda(float r, float a, int c);
 int Color() { return color; }
};
MesaRedonda::MesaRedonda(float r, float a, int c) :
Circulo(r), Mesa(a)
{
 color = c;
}
void main()
{
 MesaRedonda mesa(15.0, 3.0, 5);
 printf("\nLas propiedades de la mesa son:");
 printf("\nAltura = %0.2f", mesa.alto());
 printf("\nArea = %0.2f", mesa.area());
 printf("\nColor = %d", mesa.Color());
}

NETGRAFIA:
 http://www.itlalaguna.edu.mx/academico/carreras/sistemas/programacion2/CPP9C.pdf

lunes, 29 de enero de 2018

EJERCICIO EN CLASE

EJERCICIO DE COCHE CONSTRUCTORES

Realizar un programa con constructores que imprima los datos de un coche

#include <conio.h>
#include <iostream>
using namespace std;

class coche{
public:
string matricula;
string marca;
int modelo;
int numerop;
public:
coche(string matricula2, string marca2, int modelo2, int numero2){
    matricula=matricula2;
marca=marca2;
modelo=modelo2;
numerop=numero2;
}
void velocidad(){
}
void velocidadMaxima(){
}
void aceleracion(){
}
void imprimir (){
cout<<matricula<<endl <<marca<<endl <<modelo<<endl <<numerop<<endl;
}
};

main (){
coche b1("BTH-7831","NISSAN",205,9);
b1.imprimir();
return 0;
}



CLASE 6: EJERCICIO

EJERCICIO: DATOS PERSONALES

Realice una clase llamada datos personales que tenga 3 datos nombre, edad, estado civil.
Realice un programa que contenga un constructor por defecto que inicialize a los valores por defecto xxx -1, y desconocido, dos métodos(constructor e imprimir) y 3 atributos.

#include <iostream>
#include <conio.h>
using namespace std;

class DatosPersonales{
private:
string nombre, estadocivil;
int edad;
public:

DatosPersonales(){
edad = -1;
nombre = "x x x";
estadocivil = "Desconocido";
}

void GetDatos()
{
cout << nombre << endl;
cout << edad << endl;
cout << estadocivil;
}
};
main()
{

DatosPersonales p1;
p1.GetDatos();

getch();
}

CLASE 5: CONSTRUCTORES

Objetivo: Investigar sobre la sintaxis, para que sirve, que sea especifico y clara y con un ejemplo de constructores que nos puede hacer mejorar los conocimientos y ampliar nuestra mente y poder programar con facilidad.

Sintaxis
La sintaxis de un lenguaje de programación es el conjunto de reglas que debemos seguir para que el compilador sea capaz de reconocer nuestro programa como un programa C válido, la sintaxis se entiende como el grupo de normas que marcan las secuencias correctas de los elementos propios de un lenguaje de programación.
PARA QUE SIRVE
La Sintaxis sirve para hablar y escribir correctamente. Aquellas personas que son capaces de dominar los principios básicos de la Sintaxis, son aquellas que tenderán a expresarse y a redactar con mayor corrección y propiedad.
Explicación de cómo funciona la sintaxis
Para que el compilador reconozca nuestro programa debemos escribir al menos todas las palabras y signos que no están en letra cursiva. Las partes en cursiva se reconocen usando otras reglas sintácticas. Estas reglas definen o dicen como debe ser una lista de sentencias. Una característica de la sintaxis del C es que los espacios en blanco y retornos de carro que aparecen en las reglas sintácticas son opcionales.  printf() es lo que se denomina una función estándar de C, es decir, una función que está incluida con el compilador. Para poder usarla dentro de un programa hay que decir en el mismo como es su forma: eso se hace incluyendo la línea #include <stdio.h> al principio. Para poder trabajar o llamar a una función estándar hay que conocer que necesita y qué hace. De la función printf hay que saber:
Su nombre

Cada vez que se coloca printf en un programa le estamos diciendo al compilador de C que queremos usar esta función. Lo que se quiere imprimir, que irá entre los paréntesis. En general, la expresión (números o texto) que va entre los paréntesis de una función se llaman parámetros de la función.

CONSTRUCTORES
Es la función que lleva el mismo nombre que la clase y que es llamada cada vez que un objeto de la clase es creado
 * Tienen el mismo nombre que la clase a la que pertenecen.
 * No tienen tipo de retorno, y por lo tanto no retornan ningún valor.
 * No pueden ser heredados.

EJEMPLO DE CONSTRUCTOR
NETGRAFIA:
http://codigomaldito.blogspot.com/2005/11/inicializacin-con-constructores.html

CLASE 4: EL ENCAPSULAMIENTO

OBJETIVO: Investigar sobre el tema de que es el encapsulamiento en c++ con un ejemplo claro que ayude a mejorar nuestros conocimientos para poder entender mejor a una función clase.

El encapsulamiento
Es el proceso de almacenar en una misma sección los elementos de una abstracción que constituyen su estructura y su comportamiento; sirve para separar el interfaz contractual de una abstracción y su implantación.
Para que la abstracción funcione como debe, la implementación debe estar encapsulada,  nunca está de más recordar que cada clase debe tener dos partes, una interfaz y una implementación, tranquilo no te asustes si no sabes que es una clase, ya llegaremos a ese tema, de momento manténgase concentrado en la encapsulación.
Existen tres niveles de acceso para el encapsulamiento, los cuales son:
Público (Public): Todos pueden acceder a los datos o métodos de una clase que se definen con este nivel, este es el nivel más bajo, esto es lo que tú quieres que la parte externa vea.
Protegido (Protected): Podemos decir que estás no son de acceso público, solamente son accesibles dentro de su clase y por subclases.
Privado (Private): En este nivel se puede declarar miembros accesibles sólo para la propia clase.
EJEMPLO :






NETGRAFIA:

https://styde.net/encapsulamiento-en-la-programacion-orientada-a-objetos/