Разделы презентаций


Пример простой иерархии классов

Содержание

Схема представления класса Triangle

Слайды и текст этой презентации

Слайд 1Пример простой иерархии классов
using System;

// Класс для

двумерных объектов.
class TwoDShape
{
public double Width;

public double Height;

public void ShowDim()
{
Console.WriteLine("Ширина и высота равны " +Width + " и " + Height);
}
}

// Класс Triangle, производный от класса TwoDShape.
class Triangle : TwoDShape {
public string Style; // тип треугольника

// Возвратить площадь треугольника.
public double Area() {
return Width * Height / 2;
}

// Показать тип треугольника.
public void ShowStyle() {
Console.WriteLine("Треугольник " + Style);
}
}





class Shapes
{

static void Main()
{
Triangle t1 = new Triangle();
Triangle t2 = new Triangle();

t1.Width = 4.0;
t1.Height = 4.0;
t1.Style = "равнобедренный";

t2.Width = 8.0;
t2.Height = 12.0;
t2.Style = "прямоугольный";

Console.WriteLine("Сведения об объекте t1:");
t1.ShowStyle();
t1.ShowDim();
Console.WriteLine("Площадь равна”+ t1.Area());

Console.WriteLine();

Console.WriteLine("Сведения об объекте t2:");
t2.ShowStyle();
t2.ShowDim();
Console.WriteLine("Площадь равна “+ t2.Area());
}
}
Пример простой иерархии классов using System; // Класс для двумерных объектов. class TwoDShape {  public double

Слайд 2Схема представления класса Triangle

Схема представления класса Triangle

Слайд 3Общая форма объявления класса, наследующего от базового класса

class имя_производного_класса :

имя_базового_класса
{
// тело класса
}

Общая форма объявления класса, наследующего от базового классаclass имя_производного_класса : имя_базового_класса {  // тело класса}

Слайд 4Еще один класс, про­изводный от класса TwoDShape и инкапсулирующий прямоугольники
//

Класс для прямоугольников, производный от класса TwoDShape.
class Rectangle :

TwoDShape
{
// Возвратить логическое значение true, если
// прямоугольник является квадратом.
public bool IsSquare()
{
if(Width == Height) return true;
return false;
}
 
// Возвратить площадь прямоугольника.
public double Area()
{
return Width * Height;
}
}
Еще один класс, про­изводный от класса TwoDShape и инкапсулирующий прямоугольники// Класс для прямоугольников, производный от класса TwoDShape.

Слайд 5Ошибка! Доступ к закрытым членам класса не наследуется.
class TwoDShape
{


double Width; // теперь это закрытая переменная
double

Height; // теперь это закрытая переменная

public void ShowDim()
{
Console.WriteLine("Ширина и высота равны " + Width + " и " + Height);
}
}

class Triangle : TwoDShape // Класс Triangle производный от класса TwoDShape.

{
public string Style; // тип треугольника


public double Area() // Возвратить площадь треугольника.
{
return Width * Height / 2; // Ошибка. Доступ к закрытому члену класса запрещен
}


public void ShowStyle() // Показать тип треугольника.
{ Console.WriteLine("Треугольник " + Style); }}
Ошибка! Доступ к закрытым членам класса не наследуется.class TwoDShape {  double Width; // теперь это закрытая

Слайд 6Вызов конструкторов базового класса
конструктор_производного_класса (список_параметров):base (список_аргументов)
{
// тело

конструктора
}

Вызов конструкторов базового классаконструктор_производного_класса (список_параметров):base (список_аргументов) {  // тело конструктора}

Слайд 7Конструктор только в производном классе
class TwoDShape
{
double width;

double height;

// Свойства ширины и длины объекта.


public double Width
{
get { return width; }
set { width = value < 0 ? -value : value; }
}

public double Height
{
get { return height; }
set { height = value < 0 ? -value : value; }
}

public void ShowDim()
{
Console.WriteLine("Ширина и длина равны " + Width + " и " + Height);
}
}



class Triangle : TwoDShape
{
string Style;

// Конструктор.
public Triangle(string s, double w, double h)
{
Width = w;
Height = h;
Style = s;
}

// Возвратить площадь треугольника.
public double Area()
{
return Width * Height / 2;
}

// Показать тип треугольника.
public void ShowStyle()
{
Console.WriteLine("Треугольник " + Style);
}
}
Конструктор только в производном классеclass TwoDShape {  double width; double height;  // Свойства ширины и

Слайд 8class TwoDShape {
double width; double height;

// Конструктор класса TwoDShape.
public TwoDShape(double w,double h)

{
Width = w; Height = h;
}

// Свойства ширины и высоты объекта.
public double Width
{
get { return width; }
set { width = value<0 ? -value : value; }
}

public double Height
{
get { return height; }
set { height = value<0?-value: value;} }

public void ShowDim()
{
Console.WriteLine(Width+" "+Height);
} }
class Triangle : TwoDShape
{
string Style;

// Вызвать конструктор базового класса.
public Triangle(string s, double w, double h) : base(w, h)
{
Style = s;
}

// Возвратить площадь треугольника.
public double Area()
{
return Width * Height / 2;
}

// Показать тип треугольника.
public void ShowStyle()
{
Console.WriteLine("Треугольник " + Style);
}
}

Конструкторы и в базовом и в производном классах

class TwoDShape {  double width; double height;   // Конструктор класса TwoDShape.  public TwoDShape(double

Слайд 9Сокрытие имен
class A
{
public int i = 0;


}

// Создать производный класс.
class B : A


{
new int i; // этот член скрывает
член i из класса A

public B(int b)
{
i = b; // член i в классе B
}

public void Show()
{
Console.WriteLine("Член i в производном классе: " + i);
}
}

class NameHiding
{
static void Main()
{
B ob = new B(2);

ob.Show();
}
Сокрытие именclass A {  public int i = 0; } // Создать производный класс. class B

Слайд 10Применение ключевого слова base для доступа к скрытому имени
Форма применения

ключевого слова base в общем виде:
base.член

где член может обозначать метод

или переменную экземпляра
Применение ключевого слова base для доступа к скрытому имениФорма применения ключевого слова base в общем виде:base.членгде член

Слайд 11Применение ключевого слова base для доступа к скрытому имени
class A
{

public int i = 0; }

// Создать

производный класс.
class B : A
{ new int i; // этот член скрывает член i из класса A

public B(int a, int b)
{
base.i = a; // Здесь обнаруживается скрытый член из класса A
i = b; // член i из класса B
}

public void Show()
{
// Здесь выводится член i из класса A.
Console.WriteLine("Член i в базовом классе: " + base.i);
// А здесь выводится член i из класса B.
Console.WriteLine("Член i в производном классе: " + i);
} }
class UncoverName
{
static void Main()
{ B ob = new B(1, 2); ob.Show(); } }
Применение ключевого слова base для доступа к скрытому имениclass A{  public int i = 0; }

Слайд 12Вызов скрытого метода
class A
{
public int i =

0;

// Метод Show() в классе A

public void Show()
{
Console.WriteLine("Член i в базовом классе:
" + i);
}
}

// Создать производный класс.
class B : A
{
new int i; // этот член скрывает член i из класса A

public B(int a, int b)
{
base.i = a; // здесь обнаруживается скрытый член из класса A
i = b; // член i из класса B
}


// Здесь скрывается метод Show() из класса A.
new public void Show()
{
base.Show(); // здесь вызывается метод Show() из класса A

// далее выводится член i из класса B
Console.WriteLine("Член i в производном классе: " + i);
}
}

class UncoverName
{
static void Main()
{
B ob = new B(1, 2);
ob.Show();
}
}
Вызов скрытого методаclass A {  public int i = 0;  // Метод Show() в классе

Слайд 13Ссылки на базовый класс и объекты производных классов
class X
{


int a;

public X(int i) { a

= i; }
}

class Y
{
int a;

public Y(int i) { a = i; }
}

class IncompatibleRef
{
static void Main()
{
X x = new X(10);
X x2;
Y y = new Y(5);

x2 = x; // верно, поскольку оба объекта относятся к одному
// и тому же типу
X2 = y; // ошибка, поскольку это объекты разного типа. Программа // компилироваться не будет!!!
}
}
Ссылки на базовый класс и объекты производных классовclass X {  int a;  public X(int i)

Слайд 14Передать ссылку на объект производного класса переменной ссылки на объект базового

класса
class X
{
public int a;

public

X(int i)
{ a = i; }
}

class Y : X
{
public int b;

public Y(int i, int j) : base(j)
{b = i; }
}

class BaseRef
{
static void Main()
{
X x = new X(10);
X x2;
Y y = new Y(5, 6);

x2 = x; // верно, поскольку оба объекта относятся к одному типу

Console.WriteLine("x2.a: " + x2.a);

x2 = y; // тоже верно, поскольку класс Y производный от класса X

Console.WriteLine("x2.a: " + x2.a);

// ссылкам на объекты класса X известно только о членах класса X

x2.a = 19; // верно

// x2.b = 27; // ошибка, поскольку член b отсутствует в классе X
}
}
Передать ссылку на объект производного класса переменной ссылки на объект базового классаclass X {  public int

Слайд 15class TwoDShape
{ double width; double height;

public TwoDShape(double w, double h)
{ Width = w;

Height = h; }

// Сконструировать копию объекта TwoDShape.
public TwoDShape(TwoDShape ob)
{ Width = ob.Width; Height = ob.Height;}

// Свойства высоты и ширины объекта.
public double Width
{ get { return width; }
set { width = value < 0 ? -value : value;}
}
public double Height
{ get { return height; }
set { height = value < 0 ? -value : value; }}
public void ShowDim()
{ Console.WriteLine("Ширина и высота равны " + Width + " и " + Height);
}}

class Triangle : TwoDShape
{ string Style;

public Triangle()
{ Style = "null";}

public Triangle(string s, double w, double h) : base(w, h) { Style = s; }

// Сконструировать копию объекта типа Triangle.
public Triangle(Triangle ob) : base(ob)
{Style = ob.Style;}
// Возвратить площадь треугольника.
public double Area()
{ return Width * Height / 2; }

// Показать тип треугольника.
public void ShowStyle()
{ Console.WriteLine("Треугольник " + Style); }
}

class Shapes7 {
static void Main()
{
Triangle t1 = new Triangle("прямоугольный", 8.0, 12.0);

// Создать копию объекта t1.
Triangle t2 = new Triangle(t1);

Console.WriteLine(«Объект t1:");
t1.ShowStyle();
t1.ShowDim();
Console.WriteLine("Площадь равна " + t1.Area());

Console.WriteLine();

Console.WriteLine(«Объект t2: ");
t2.ShowStyle();
t2.ShowDim();
Console.WriteLine("Площадь равна " + t2.Area());
} }
class TwoDShape {  double width; double height;  public TwoDShape(double w, double h)  { Width

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика