Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
теория ООП .doc
Скачиваний:
10
Добавлен:
26.09.2019
Размер:
199.17 Кб
Скачать

Int beta; // Спецификатор private по умолчанию,

public int gamma; // Явно задан спецификатор public.

/* Методы для получения доступа к членам alpha и beta.

*/

public void setAlpha(int a) {

alpha = а;

}

public int getAlpha() {

return alpha;

}

public void setBeta(int a) {

beta = a;

}

public int getBetaO {

return beta;

}

class AccessDemo {

public static void Main() {

MyClass ob = new MyClass();

/* Доступ к private-членам alpha и beta разрешен

только посредством соответствующих методов. */

ob.setAlpha(-99);

ob.setBeta(19);

Console.WriteLine("Член ob.alpha равен " +

ob.getAlpha());

Console.WriteLine("Член ob.beta равен " +

ob. getBetaO ) ;

// К private-членам alpha или beta нельзя получить

// доступ таким образом:

// ob.alpha = 10; // Неверно! alpha -- закрытый член!

// ob.beta = 9 ; // Неверно! beta -- закрытый член!

// Можно получить прямой доступ

//к члену gamma, поскольку он открытый член.

ob.gamma = 99;

}

}

Понятие объекта в ООП

Объект – это экземпляр класса. Класс является логической абстракцией до тех пор, пока не будет создан объект и не появится физическая реализация в памяти компьютера.

Пример

Class Vechicle{

public int passengers; //кол-во пассажиров

public int fuelcap; //емкость топливного бака

}

//В этом классе создаются два объекта класса Vechicle

class TwoVechicles{

public static void Main(){

Vehicle minivan=new Vehicle(); // строка *

Vehicle sportcar=new Vehicle();

// переменным объекта minivan присваиваются значения

minivan.passengers=7;

minivan.fuelcap=16;

// переменным объекта sportcar присваиваются значения

sportcar.passengers=2;

sportcar.fuelcap=14;

}

В строке* выполняются два действия. Во – первых, объявляется переменная типа Vehicle, называемая minivan. Эта переменная не определяет объект(т. е. не является непосредственно объектом), она только ссылается на объект. Следовательно после выполнения данной строки кода переменная minivan будет ссылаться на объект типа Vehicle. Оператор new динамически выделяет память для объекта и возвращает ссылку эту область памяти, выделенной объекту оператором new. В дальнейшем эта ссылка хранится в переменной. Следовательно, всем объектам в С# память должна выделяться динамически. Иначе,

Vehicle minivan;

minivan=new Vehicle;

В первой строке ввода переменная minivan объявляется как ссылка на объект типа Vehicle. То есть переменная minivan может ссылаться на объект, но не являться самим объектом. В следующей строке кода создается новы объект класса Vehicle, а переменной minivan присваивается ссылка на этот объект, теперь переменная minivan связана с объектом.

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

Наследование – это механизм получения нового класса из существующего. Производный класс создается путем дополнения или изменения существующего класса, благодаря этому реализуется концепция повторного использования кода. С помощью наследования может быть создана иерархия родственных типов.

Чтобы унаследовать один класс от другого, используется синтаксис:

class <производный_класс>: <базовый_класс>

// Использование свойств для записи и чтения закрытых

// членов класса.

using System;

// Класс двумерных объектов,

class TwoDShape {

double pri_width; // это private-член.

double pri_height; // это private-член.

// Свойства width и height,

public double width {

get { return pri_width; }

set { pri_width = value; }

public double height {

get { return pri__height; }

set { pri_height = value; }

}

public void showDimO {

Console.WriteLine("Ширина и высота равны " +

width + " и " + height);

// Класс треугольников - производный от класса TwoDShape.

class Triangle : TwoDShape {

public string style; // Тип треугольника.

// Метод возвращает значение площади треугольника,

public double area() {

return width * height / 2;

// Отображаем тип треугольника,

public void showStyleO {

Console.WriteLine("Треугольник " + style);

class Shapes2 {

public static void MainO {

Triangle t l = new Triangle();

tl . width = 4.0;

tl . height = 4.0;

tl . style = "равнобедренный";

t1. showStyl ( ) ;

tl. showDim();

Console.WriteLine ("Площадь равна " + tl. area());

Console.WriteLine();

Инкапсуляция – это ограниченный доступ к данным и их объединение с методами, обрабатывающими эти данные. Доступ к отдельным частям класса регулируется с помощью спец. Ключей: открытая часть, закрытая часть. Доступ к закрытой секции класса возможен только из его собственных методов и методов классов – потомков. Инкапсуляция повышает надежность программ.

using System;

class MyClass {

private int alpha; // Явно задан спецификатор private,