Класс Book с закрытыми данными и открытыми функциями

package cjLab1_k2_1;

 

Class Book

{

private int pages;

private String name;

public void SetPages (int Pages) {pages= Pages;}

public int GetPages ( ) {return pages;}

public void SetName (String Name) {name= Name;}

public String GetName ( ) {return name;}

}

 

class Class1

{

public static void main()

{

Book book= new Book();

book.SetName("BOOK");

book.SetPages(500);

 

System.out.println("book.name= " + book.GetName());

System.out.println("book.pages= " + book.GetPages());

}

}

 

 

Наследование

 

package cjLab1_k2_1;

 

class Book

{

private int pages;

private String name;

 

public void SetPages (int Pages) {pages= Pages;}

public int GetPages ( ) {return pages;}

public void SetName (String Name) {name= Name;}

public String GetName ( ) {return name;}

}

 

class ManualBook extends Book

{

booleanmanual;

 

public void SetMenual (boolean Manual) {manual= Manual;}

public boolean IsManual ( ) {return manual;}

}

 

class Class1

{

public static void main()

{

ManualBook manualBook= new ManualBook();

manualBook.SetName("BOOK");

manualBook.SetPages(500);

manualBook.SetMenual (true);

 

System.out.println("book " + manualBook.GetName()+

" contains " + manualBook.GetPages()+ " pages");

 

if (manualBook.IsManual()) System.out.println("book is manual\n");

else System.out.println("book isn't manual\n");

}

}

 

Задание

 

4) Самостоятельно создать класс калькулятора Calc с закрытой целочисленной переменной accumulator и с интерфейсом:

 

void Init (int n) – инициализировать скрытый аккумулятор accumulator

числом n,

int Get ( ) – получить значение accumulator,

void Add (int n) – прибавить n к значению accumulator,

void Sub (int n) – вычесть nиз значения accumulator.

 

5) Создать класс SecondCalc, порождённый из класса Calc и расширяющий его интерфейс следующей функцией

 

void Mul (int n) – умножить значение accumulator на указанное число n.

 

6) Создать класс ThirdCalc, порождённый из класса SecondCalc и расширяющий его интерфейс следующей функцией

 

void ChangeSign ( ) – изменить знак значения accumulator,

bool IsSign ( ) – получить знак значения accumulator.

 

7) Создать класс FourthCalc, порождённый из класса ThirdCalc и расширяющий его интерфейс следующей функцией

 

void ChangeSign ( ) – изменить знак значения accumulator,

bool IsSign ( ) – получить знак значения accumulator.

 

Для самостоятельной работы

Часть 3. Классы и наследование в языке С++/CLI

Каркас консольного С++.NET приложения

 

/////////////////////////

// ccLab1k2_1

 

#include "stdafx.h"

#using <mscorlib.dll>

 

using namespace System;

 

int _tmain()

{

// TODO: Please replace the sample code below with your own.

Console::WriteLine(S"Hello World");

return 0;

}

 

Структура Book

 

/////////////////////////

// C++.NET File ccLab1k2_1

// Структура Book

#include "stdafx.h"

//#using <mscorlib.dll>

//#include <stdio.h>

//#include <string.h>

 

//using namespace System;

 

struct Book

{

int pages;

char name [20];

};

 

int _tmain ( )

{

// TODO: Please replace the sample code below with your own.

//Console::WriteLine (S"Hello World");

printf ("Hello!\n");

Book book;

book.pages= 500;

strcpy (book.name, "BOOK");

printf ("book %s contains %d pages\n", book.name, book.pages);

return 0;

}

 

Класс Book

/////////////////////////

// C++.NET File ccLab1k2_2

// Класс Book

#include "stdafx.h"

 

class Book

{

public:

int pages;

char name [20];

};

 

int _tmain ( )

{

printf ("Hello!\n");

Book book;

book.pages= 500;

strcpy (book.name, "BOOK");

printf ("book %s contains %d pages\n", book.name, book.pages);

return 0;

}

=========================================

/////////////////////////

// C++.NET File ccLab1k2_2

// Класс Book

#include "stdafx.h"

 

class Book

{

int pages;

char name [20];

public:

void SetPages (int Pages) {pages= Pages;}

int GetPages ( ) {return pages;}

void SetName (char* pName) {strcpy (name, pName);}

char* GetName ( ) {return name;}

};

 

int _tmain ( )

{

printf ("Hello!\n");

Book book;

//book.pages= 500;

book.SetPages (300);

//strcpy (book.name, "BOOK");

book.SetName ("BOOK");

printf ("book %s contains %d pages\n", book.GetName ( ),

book.GetPages ( ));

return 0;

}

 

Наследование

 

/////////////////////////

// C++.NET File ccLab1k2_4

// Класс Book

#include "stdafx.h"

 

class Book

{

int pages;

char name [20];

public:

void SetPages (int Pages) {pages= Pages;}

int GetPages ( ) {return pages;}

void SetName (char* pName) {strcpy (name, pName);}

char* GetName ( ) {return name;}

};

 

class BookOther: public Book

{

bool manual;

public:

void SetMenual (bool Manual) {manual= Manual;}

bool IsManual ( ) {return manual;}

};

 

int _tmain ( )

{

printf ("Hello!\n");

BookOther book;

book.SetPages (300);

book.SetName ("BOOK");

book.SetMenual (true);

 

printf ("book %s contains %d pages\n", book.GetName ( ),

book.GetPages ( ));

if (book.IsManual()) printf ("book is manual\n");

else printf ("book isn't manual\n");

return 0;

}

 

Задание

 

8) Самостоятельно создать класс калькулятора Calc с интерфейсом:

 

void Init (int n) – инициализировать скрытый аккумулятор accumulator

числом n,

int Get ( ) – получить значение accumulator,

void Add (int n) – прибавить n к значению accumulator,

void Sub (int n) – вычесть nиз значения accumulator.

 

9) Создать класс OtherCalc, порождённый из класса и расширяющий его интерфейс следующей функцией

 

void Mul (int n) – умножить значение accumulator на указанное число n.

 

10) Создать класс AnotherCalc, порождённый из класса OtherCalc и расширяющий его интерфейс следующей функцией

 

void ChangeSigh ( ) – изменить знак значения accumulator,

bool IsSigh ( ) – получить знак значения accumulator.