Member Functions


Member Functions

A class may have functions to perform operations in the object or with other objects. These functions allow using the object without knowing the function implementation. Because one programmer can implement the functions of one class, while other programmers can easily use the classes created by others programmer. OOP provides a natural way to work in teams while each programmer focuses in one specific task, or each programmer focuses in the design of one class at a time.
Una clase puede tener funciones para hacer operaciones sobre el objeto o con otros objetos. Estas funciones permiten usar el objeto sin conocer su implementación. Debido a que un programador puede implementar las funciones de una clase, mientras otros programadores pueden fácilmente usar las clases creadas por otros programadores. La POO proporciona una forma natural para trabajar en equipo mientras que cada programador se concentra en una tarea específica, o cada programador se enfoca en el diseño de una clase cada vez.

Tip
Please review the section Wintempla > Functions to know more about how to add a function to a class.
Por favor revise la sección Wintempla > Functions para conocer más acerca de como agregar funciones a una clase.

Tip
Do NOT forget to write the class name in all the member functions in the source file (*.cpp) as shown in the figure.
NO se olvide de escribir el nombre de la clase en todas las funciones miembro en el archivo fuente (*.cpp) como se muestra en la figura.

FunctionDefinition

Problem 1
Find the output of the code below.
Encuentre la salida del código de abajo.

Book.h
#pragma once
class Book
{
public:
     Book(void);
     ~Book(void);
     COLORREF color;
     int numbPages;
     wstring author;
     int year;
     double price;
     void Reset();
     void IncreasePrice(double percent);
};

Book.cpp
#include "StdAfx.h"
#include "Book.h"

Book::Book(void)
{
     Reset();
}

Book::~Book(void)
{
}

void Book::Reset()
{
     color = RGB(0, 0, 0); // Default is black
     numbPages = 0;
     year = 1990;
     price = 0.0;
}

void Book::IncreasePrice(double percent)
{
     const double increase = price*percent;
     price += increase;
}

Library.cpp
...

void Library::Window_Open(Win::Event& e)
{
     Book book;
     book.numbPages = 100;
     book.price = 235.90;
     book.author = L"Shakespeare";
     DisplayBookInfo(book);
     book.Reset();
     book.author = L"Nery Allen";
     DisplayBookInfo(book);
}

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 2
A programmer would like to create the class Persona to represent humans in a program. List five possible: (a) Member variables, (b) Member functions.
Un programador quisiera crear la clase Persona para representar humanos en un programa. Liste cinco posibles: (a) Variables miembro, (b) Funciones Miembro.

Problem 3
Find the output of the code below suppose that the files Book.h and Book.cpp are the same as before.
Encuentre la salida del código de abajo suponga que los archivos Book.h y Book.cpp son los mismos que antes.

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;
     book.numbPages = 100;
     book.price = 100.90;
     book.author = L"Shakespeare";
     DisplayBookInfo(book);
     Book bookTwo = book;
     bookTwo.price /= 2.0;
     bookTwo.numbPages-=50;
     bookTwo.author += L" (Review)";
     DisplayBookInfo(bookTwo);
}

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);
}


Encapsulation

The grouping of values and functions inside an object is called encapsulation. Encapsulation provides data values so that the object can operate and provide services (through its functions) to other objects. The member variables of each object are very important to keep the object integrity. For instance in box object, it is not important to know how to destroy it; what is important is that the function destroy the box. In other words, the process of destroying a box as well as other properties and operations of the box are encapsulated inside the the box object.
El empaquetamiento o agrupamiento de valores y funciones dentro de un objeto es conocido como encapsulación. Encapsulación proporciona datos para que cada objeto opere y proporcione servicios (a través de las funciones) a otros objetos. Las variables miembro de cada objeto son importantes para mantener la integridad del objeto. Por ejemplo en un objeto del tipo caja no es importante saber cómo destruirla; lo que importa es que la función destruya la caja. En otras palabras el procedimiento de destrucción, así como otras propiedades y operaciones de la caja están encapsulado dentro del objeto caja.

Problem 4
Create a project called Space. Add the ComplexNumb class to manipulate complex numbers as shown.
Cree un proyecto llamado Space. Agregue la clase ComplexNumb para manipular números complejos como se muestra.

Space.h
#pragma once //______________________________________ Space.h
#include "resource.h"

#include "ComplexNumb.h"
class Space: public Win::Dialog
{
public:
     Space()
     {
     }
     ~Space()
     {
     }
protected:
     ...
};

Space.cpp
...

void Space::Window_Open(Win::Event& e)
{
     ComplexNumb x;
     x.real = 2.0;
     x.imag = 3.0;
     const double module = x.GetModule();
     const double angle= x.GetAngle();
     wstring text;
     Sys::Format(text, L"%g, %g", module, angle);
     this->Text = text;
}

SpaceModule

Problem 5
Modify the project Space. Modify ComplexNumb class by adding the respective functions as shown. Suppose that there is a multiline textbox in the program GUI.
Modifique el proyecto llamado Space. Modifique la clase ComplexNumb agregando las respectivas funciones como se muestra. Suponga que hay una caja de texto multi-linea en la GUI del programa.

ComplexNumbClassView

Space.cpp
...

void Space::Window_Open(Win::Event& e)
{
     ComplexNumb x;
     x.real = 2.0;
     x.imag = 3.0;
     this->tbxOutput.Text = L"x = ";
     this->tbxOutput.Text += x.GetText();
     this->tbxOutput.Text += L"\r\ny = ";

     ComplexNumb y = x.GetConjugate();
     this->tbxOutput.Text += y.GetText();
}

SpaceConjugate

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