Introducción a C++

1

Todo lo que aprenderás sobre C++

2

¿Qué es programar y por qué aprender C++?

Conceptos Generales de C++

3

La Historia de C++ y sus diferencias con C

Preparando el entorno de trabajo

4

Instalando Codeblocks

5

Pasos para instalar en mac

6

Ejecutando nuestro primer programa

7

¿Qué son las librerías STD? - Portada del Proyecto

Manejo de memoria

8

¿Qué es la memoria y tipos de datos?

9

Alojando variables en memoria

10

¿Cómo usar operadores?

11

¿Qué son los apuntadores?

12

Reto: Escribir un programa que calcule áreas.

Entrada de datos y funciones

13

¿Cómo introducir datos a nuestro programa?

14

¿Cómo usar condicionales?

15

Usando condicionales

16

¿Cómo encapsular código en funciones ?

17

¿Qué son los parámetros y como usarlos?

18

Reto: Juego narrativo implementando condicionales y entrada de datos.

Loops y arreglos

19

¿Qué son los arreglos?

20

¿Qué son los Loops?

21

Programando Loops

22

Loops , arreglos y arreglos bidimensionales

23

Dibujando el mapa de nuestro juego con arreglos

24

Manipulando mi jugador con inputs en arreglos unidimensionales

25

Arreglos bidimensionales

26

Reto: Moviendo a mi personaje en mi arreglo bidimensional

Lectura de Archivos

27

Creando y leyendo un archivo externo

28

Leyendo archivos externos

29

Reto: En el mapa, crear punto de inicio y salida del jugador

Programación Orientada a Objetos

30

¿Qué es POO?

31

Definiendo una clase y creando sus instancias

32

Encapsulación

33

Abstracción

34

Herencia

35

Propiedades de clase en herencia

36

Polimorfismo

Finalizando nuestro proyecto

37

Creación de personaje y archivo de encabezado

38

Moviendo mi personaje con entrada de datos

39

Mapa

40

Interacción entre el personaje y el mapa

41

Paredes

42

Optimizando trazado de mapa

43

Colisiones

44

Creando nuestra portada de juego

45

Tesoro y victoria

46

Conclusiones

47

Proyecto final

Propiedades de clase en herencia

35/47

Lectura

Como vimos en clase, herencia es la capacidad que tienen algunas clases (clase derivada) de heredar miembros y funciones de otras clases padre (clase base) y así crear jerarquías en nuestro programa.
Una parte importante en la herencia es el tipo de acceso que se tiene a la información y miembros de la clase, estos son los siguientes:

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 28

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Buenas,

Dejo este esquema resumen de Herencia, y para ayudar a entender un poco temas como public, private o protected.

Dragon Ball 😄

`#include <iostream>
using namespace std;

class SuperSayayin
{

protected:

    string name;
    int life, power;

public:

    SuperSayayin(string iName, int iLife, int iPower)
    {
        name = iName;
        life = iLife;
        power = iPower;
    }

    void Attack()
    {
        cout<<name<< ", Kame Hame HaaaA!! con: " <<power<< " de poder."<<endl;
    }
};

class Sayayin : public SuperSayayin
{
    public:

    Sayayin(string iName, int iLife, int iPower) : SuperSayayin(iName, iLife, iPower)
    {
        name = iName;
        life = iLife;
        power = iPower - 20;
    }
};

int main()
{
    SuperSayayin Goku("Son Goku", 100, 100);
    Sayayin Gohan("Son Gohan", 100, 100);

    cout<< "Dragon Ball" <<endl<<endl;
    Goku.Attack();
    Gohan.Attack();

    return 0;
}

Resultado 😄

Cambiando el programa seria asi:

#include <iostream>

using namespace std;

class Wizard {
protected:
    int mana, hp, power;

public:
    Wizard(int _mana, int _hp, int _power) {
        mana = _mana;
        hp = _hp;
        power = _power;
    }

    void spell() {
        cout << "fireworks!! " << power << endl;
    }
};


class IceWizard : public Wizard {
public:
    IceWizard(int _mana, int _hp, int _power):
        Wizard(_mana, _hp, _power) {
            mana = _mana;
            hp = _hp;
            power = _power + 10;
    }
};

int main() {

    Wizard gandalf( 100, 10, 20 );
    gandalf.spell();

    IceWizard sauroMan( 100, 10, 20 );
    sauroMan.spell();

    return 0;
}

Genial, pero la real pregunta es entonces porqueusar protected o private ? no nos interesa que todas las clases derivadas tengan acceso a todas las caracteristicas de una clase padre? abrazo crecks

Que buena la aclaración de protected

<code>
#include <iostream>

using namespace std;

class Vikingo
{
    protected:
        string name;
        int HP, Power;

    public:
        Vikingo(string iName, int iHP, int iPower)
        {
            name = iName;
            HP = iHP;
            Power = iPower;
        }
void Attack()
{
    cout << name <<" Ataca con la fuerza de " << Power << " Hombres"<< endl;
}
};

class ReyVikingo : public Vikingo
{
    public:

    ReyVikingo(string iName, int iHP, int iPower) : Vikingo(iName, iHP, iPower)
    {
        name = iName;
        HP = iHP + 100;
        Power = iPower + 20;
    }
};
int main()
{
    Vikingo Bjorn("Bjorn", 2600, 120);
    ReyVikingo Ragnar("Ragnar", 2500, 100);
    Bjorn.Attack();
    Ragnar.Attack();
    return 0;
}
#include <iostream>

using namespace std;

class Mage
{

    public:

        Mage(int imana, int ihp, int ipower)
        {
            mana = imana;
            hp = ihp;
            power = ipower;
        }

        void spell()
        {
            cout<<"mage things blah blah blah xd - "<< power << endl;
        }

    protected:

        int mana, hp, power;

    private:


};

class iceMage : public Mage //Hereda de mago
{
    public:
        iceMage(int imana, int ihp, int ipower) : Mage(imana, ihp, ipower) //El constructor hereda de la clase padre tambien
        {
            mana = imana;
            hp = ihp;
            power = 10+ipower;
        }

    //Las clases no heredan atributos ni metodos privados
};

int main()
{

    Mage mine(100,10,20);
    mine.spell();

    iceMage elXD(100,10,20);
    elXD.spell();

    return 0;
}

Ya aqui quede claro en base a mi comentario en la seccion anterior, pero aun asi creo que el maestro se enredo mucho pasando los atributos de privados a publicos.
Como recomendacion o sugerencia, mejor los hubiera pasado a protegidos y de un solo hubiera explicado el tema para que esta seccion del curso no existiera.

Excelente explicacion muy concreta 😄

Casi no veo la diferencia de hacer otra clase, en el ejemplo anterior en la clase IceMage casi que copiamos todo lo que habia en la clase padre, todavía no me queda claro.

Gracias

Buen resumen!

Ahora entiendo mejor

Gracias por la explicación, queda mucho más claro con este texto 😄

muchas gracias

Quedo muy entendido este texto 😄

Osea que cada cada creación de un hijo va a tener que ir acompañada de su propio acceso privado o de otra forma acceder al padre mediante el protected?

bien gracias por la explicación.

#include <iostream>

using namespace std;
class Mage
{
    public:
        int Mana, Hp, Power;

        Mage(int iMana, int iHp, int iPower){
            Mana = iMana;
            Hp = iHp;
            Power = iPower;
        }

        void Spell (){
            cout << "Fireworks!! "<<  Power << endl;
        }
    /*las Herecnias solo hereden rasgos publicos no privados
    private:
        int Mana, Hp, Power; */
};
/*Hereda del padre y se transforma en el hijo*/

class IceMage: public Mage{
    public:
    IceMage(int iMana, int iHp, int iPower):Mage(iMana, iHp, iPower)
    {
        Mana = iMana;
        Hp = iHp;
        Power = iPower+10;
    }
};


int main()
{
    Mage Gandalf(100, 10, 20);
    IceMage Saruman(100,10,20);

    Gandalf.Spell();
    Saruman.Spell();

    return 0;
}

Una muy buena explicación.

Ya decía que debía de haber una manera 😃

#include <iostream>

using namespace std;

class Mago{
private:
  //int mana, vida, poder; Aquí las clases heredadas no pueden acceder a los datos.
protected:
  int magia, vida, poder;
public:
  Mago(int iMagia, int iVida, int iPoder){
    magia = iMagia;
    vida = iVida;
    poder = iPoder;
  }
  void hechizo(){
    cout << "Lanzallamas" << poder << endl;
  }
};

class MagoHelado : public Mago{
public:
  MagoHelado(int iMagia, int iVida, int iPoder) : Mago(iMagia, iVida, iPoder){
    magia = iMagia;
    vida = iVida;
    poder = iPoder + 10;
  }
};

int main(){
  Mago Dumbledore(60, 30, 30);
  MagoHelado Ioga(60, 30, 30);
  Dumbledore.hechizo();
  Ioga.hechizo();
  return 0;
}
#include <iostream>

using namespace std;

class Person
{
public:
    int mana, hp, power;

    Person(int iMana, int HP, int iPower)
    {
        mana = iMana;
        hp = HP;
        power = iPower;
    }
    void Algo()
    {
        std::cout << "Fireworks!! " << power << std::endl;
    }
};

class IcePersona : public Person
{
public:
    IcePersona(int iMana, int HP, int iPower) : Person(iMana, HP, iPower)
    {
        mana = iMana;
        hp = HP;
        power = iPower + 10;
    }
};
int	main()
{
    Person Dei(100, 10, 30);
    IcePersona tut(100, 20, 30);

    Dei.Algo();
    tut.Algo();
    return 0;
}
#include <iostream>

using namespace std;

class Mage
{
public:

    int mana, hp, power;
    Mage(int iMana, int iHP, int iPower)
    {
        mana = iMana;
        hp = iHP;
        power = iPower;
    }

    void Spell()
    {
        cout << "Trainers!!" << power << endl;
    }
};

class IceMage : public Mage
{
public:

    IceMage(int iMana, int iHP, int iPower):Mage(iMana, iHP,iPower)
    {
        mana = iMana;
        hp = iHP;
        power = iPower + 10;
    }
};

int main()
{
    Mage Cocktus(200,10,50);
    IceMage Janecoc(200,10,50);

    Cocktus.Spell();
    Janecoc.Spell();

    return 0;
}```

Genial

muy buen aporte gracias profe

Gracias muy interesante.

Muchas gracias , estos dos días los estoy aprovechando a full aprendiendo c++