Member Variables


Member Variable

A class may have variables to store information to keep the object integrity so that the object can provide some sort of functionability. For instance, consider the Box class previously discussed. This class has three integer variables to store the physical dimensions of each book.
Una clase puede tener variables que le permiten almacenar información para mantener su integridad o para proporcionar funcionalidad. Por ejemplo, considere la clase Box que discutió previamente. Esta clase tiene tres variables enteras para almacenar las dimensiones físicas de cada libro.

Tip
To add member variables to a class, you can edit the respective header file (*.h) of the class.
Para agregar variables miembro a una clase, solo edite el archivo de encabezado respectivo (*.h) de la clase.

Tip
After adding member variables to a class, you must appropriately initialize these variables in the constructor of the class as shown in the Compact Disk class shown below.
Después de agregar variables miembro a una clase, usted debe inicializar en forma apropiada estas variables en el constructor de la clase como se muestra en la clase de Disco Compacto mostrada debajo.

CompactDisk.h
//__________________ CompactDisk.h
#pragma once

class CompactDisk
{
public:
     CompactDisk();
     ~CompactDisk();
     int songCount;
     double price;
     wstring artist;
};

CompactDisk.cpp
//__________________ CompactDisk.cpp

#include "StdAfx.h"
#include "CompactDisk.h"

CompactDisk::CompactDisk()
{
     songCount = 0;
     price = 0.0;
     artist = L"Unknown";
}

CompactDisk::~CompactDisk()
{
}


Problem 1
Find the output of the code below in the Library program previously discussed.
Encuentre la salida del código de abajo in el programa de Library que fue previamente discutido.

Library.cpp
void Library::Window_Open(Win::Event& e)
{
     Book book;
     book.price = 198.50;
     book.numbPages = 220;
     book.author = L"Edgar Alan";
     book.color = RGB(0, 0, 200); // Blue
     book.numbPages++;
     book.price*=2.0;
     //
     wstring text;
     Sys::Format(text, L"The book of %s has %d pages and costs %.2f",
          book.author.c_str(), book.numbPages, book.price);
     this->Text = text;
}


Problem 2
Find the output of the code below in the Library program previously discussed.
Encuentre la salida del código de abajo in el programa de Library que fue previamente discutido.

Library.h
#pragma once //______________________________________ Library.h
#include "resource.h"
#include "Book.h"
class Library: public Win::Dialog
{
public:
     Library()
     {
     }
     ~Library()
     {
     }
     void DisplayBookInfo(Book& book);
     ...
};

Library.cpp
...
void Library::Window_Open(Win::Event& e)
{
     Book book[2];
     book[0].price = 198.50;
     book[0].numbPages = 220;
     book[0].author = L"Edgar Allan";
     book[0].color = RGB(0, 0, 200); // Blue
     book[1].numbPages++;
     book[1].price+=12.50;
     book[1].author = L"Harry Potter";
     //
     DisplayBookInfo(book[0]);
     DisplayBookInfo(book[1]);
}

void Library::DisplayBookInfo(Book& book)
{
     wstring text;
     Sys::Format(text, L"The book of %s has %d pages and costs %.2f",
          book.author.c_str(), book.numbPages, book.price);
     this->MessageBox(text, L"Book Info", MB_OK);
}


Problem 3
Find the output of the code below in the Library program previously discussed.
Encuentre la salida del código de abajo in el programa de Library que fue previamente discutido.

Library.h
#pragma once //______________________________________ Library.h
#include "resource.h"
#include "Book.h"
#define BOOK_COUNT 3
class Library: public Win::Dialog
{
public:
     Library()
     {
     }
     ~Library()
     {
     }
     void DisplayBookInfo(Book& book);
     wchar_t *GetAuthor(int index);
     ...
};


Library.cpp
...
void Library::Window_Open(Win::Event& e)
{
     Book book[BOOK_COUNT];
     for(int i = 0; i < BOOK_COUNT; i++)
     {
          book[i].numbPages = 10*(i+1);
          book[i].price = 2.0*book[i].numbPages;
          book[i].author = GetAuthor(i);
          DisplayBookInfo(book[i]);
     }
}

void Library::DisplayBookInfo(Book& book)
{
     wstring text;
     Sys::Format(text, L"The book of %s has %d pages and costs %.2f",
          book.author.c_str(), book.numbPages, book.price);
     this->MessageBox(text, L"Book Info", MB_OK);
}

wchar_t* Library::GetAuthor(int index)
{
     switch(index)
     {
     case 0: return L"Robert Hicks";
     case 1: return L"Juan Perez";
     }
     return L"Alicia Smith";
}


Tip
Most programmers who use structured programming have a difficult time switching to Object-Oriented Programming. The following tips will help you identify when you are using structure programming instead of OOP.
  1. I use frequently the keyword struct instead of the keyword class. As a matter of fact, I do not know when to use struct and when to use class
  2. I think of adding functions to my program instead of adding classes
  3. I organize my programs in structures and functions instead of using classes
  4. I have a set of functions that take a pointer to a structure
  5. I have global variables in my program
  6. I have global functions in my program
  7. I believe that in some cases global variables are necessary
  8. I believe that Object-Oriented Programming is not necessary
  9. I believe that Object-Oriented Programming is not practical in real applications
  10. I believe that Object-Oriented Programming is too difficult to be useful
  11. My program has one or more global function(s) to request memory, and has one or more global function(s) to release this memory
  12. I believe structure programming is easy to write complex programs
  13. I am very excited at the beginning of writing a program using structured programming. Later on, I wondered why the program has become so difficult and have a hard time completing the program

La mayoría de los programadores que usan la programación estructurada tiene problemas para cambiar a la Programación Orientada a Objetos. Los siguientes consejos le pueden ayudar a identificar cuando usted está usando la programación estructurada en lugar de la programación orientada a objetos.
  1. Yo uso frecuentemente la palabra clave struct en lugar de la palabra clave class. De hecho, no sé cuando usar struct y cuando usar class
  2. Pienso en agregar funciones a mi programa en lugar de agregar clases
  3. Organizo mi programa en estructuras y funciones en lugar de usar las clases
  4. Tengo un conjunto de funciones que toman un puntero a una estructura
  5. Tengo variables globales en mi programa
  6. Tengo funciones globales en mi programa
  7. Creo que en algunos casos las variables globales son necesarias
  8. Creo que la Programación Orientada a Objetos no es necesaria
  9. Creo que la Programación Orientada a Objetos no es práctica en aplicaciones reales
  10. Creo que la Programación Orientada a Objetos es demasiada complicada para propósitos prácticos
  11. Mi programa tiene una o más funciones para solicitar memoria, y tiene una o más funciones para liberar memoria
  12. Creo que la programación estructurada es fácil para escribir programas complejos
  13. Estoy muy emocionado cuando comienzo a escribir un programa usando la programación estructurada. Más adelante, me pregunto porque el programa se ha hecho tan difícil y se puede decir que no puede completar el programa

Constant Member Variables

In some cases, it is necessary to have constant member variables. The code below illustrates how to declare and initialize a constant member variable; in this case the number of pages of the book is 100.
En algunas clases es necesario declarar variables miembro constantes. El código de abajo ilustra como declarar e inicializar una variable miembro constante; en este caso el número de páginas del libro es de 100.

Book.h
class Book.h
{
public:
     Book();
     ~Book();
     const int numPages;
};


Book.cpp
Book::Book() : numbPages(100)
{
}

Book::~Book()
{
}

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home