
Министерство сельского хозяйства и продовольствия РБ
УОО" Столинский государственный аграрно-экономический колледж"
Реферат
По дисциплине: «Основы алгоритмизации и программирования »
Тема: «Инкапсуляция, полиморфизм, наследование»
Выполнил учащийся: уч-ся 2-го курса гр. «П-6»
Тимошков Станислав
Принял преподаватель: Флорьянович Ольга Васильевна.
Столин 2012.
1. Инкапсуляция………………………………………………………....1
2. Полиморфизм ………………………………………………………...4
3. Наследование…………………………………………………………6
1. Инкапсуляция
Инкапсуляция (encapsulation) - это механизм, который объединяет данные и код, манипулирующий этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В объектно-ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object). Другими словами, объект - это то, что поддерживает инкапсуляцию.
Внутри объекта коды и данные могут быть закрытыми (private). Закрытые коды или данные доступны только для других частей этого объекта. Таким образом, закрытые коды и данные недоступны для тех частей программы, которые существуют вне объекта. Если коды и данные являются открытыми, то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы. Характерной является ситуация, когда открытая часть объекта используется для того, чтобы обеспечить контролируемый интерфейс закрытых элементов объекта.
На самом деле объект является переменной определённого пользователем типа. Может показаться странным, что объект, который объединяет коды и данные, можно рассматривать как переменную. Однако применительно к объектно-ориентированному программированию это именно так. Каждый элемент данных такого типа является составной переменной.
Приведу пример инкапсуляции свойства на примере класса автомобиль:
using System;
namespace OOPLibrary.Auto
<summary>
Класс описывающий свойства автомобиля и его действия
</summary>
public class Auto
<summary>
Хранит возраст автомобиля. Так как возраст нельзя менять из клиента,
то это свойство объявлено с модификатором private.
</summary>
private int _age;
<summary>
Хранит признак стоит автомобиль или едет. Свойство используется только внутри класса Auto
и не должно быть доступно в клиентах, потому оно так же объявлено с модификатором private.
</summary>
private bool _isMoving;
<summary>
Хранит цвет автомобиля. Его можно менять из клиентских классов,
поэтому свойство объявлено с модификатором public.
</summary>
public string Color;
<summary>
Хранит имя автомобиля, допустим, что его тоже можно менять,
поэтому тоже объявляем с модификатором public.
</summary>
public string Name;
<summary>
Конструктор класса. Тут задаются начальные свойства автомобиля.
</summary>
public Auto()
age = 5;
isMoving = false;
Color = "Красный";
Name = "Мой автомобиль";
<summary>
С помощью этого метода можно получить возраст автомобиля,
так как свойство _age недоступно из клиентов.
</summary>
<returns>Возвращает возраст автомобиля.</returns>
public string GetAge()
return "Этому автомобилю " + _age + " лет."
<summary>
Метод стартует автомобиль, если он еще не стартовал.
</summary>
public void Start()
if (_isMoving)
Console.WriteLine("Да и так уже едем.");
else
_isMoving = true;
Console.WriteLine("Поехали...");
<summary>
Метод останавливает автомобиль, если он ехал.
</summary>
public void Stop()
if (_isMoving)
isMoving = false;
Console.WriteLine("Остановились.");
else
Console.WriteLine("И так уже стоим, куда же дальше?");
<summary>
Если автомобиль едет, то поворачиваем налево.
</summary>
public void MoveLeft()
if (_isMoving)
Console.WriteLine("Поворнули налево.");
else
Console.WriteLine("Да куда же поворачивать, мы же стоим.");
<summary>
Если автомобиль едет, то поворачиваем направо.
</summary>
public void MoveRight()
if (_isMoving)
Console.WriteLine("Поворнули направо.");
else
Console.WriteLine("Да куда же поворачивать, мы же стоим.");
Данный
класс, описывает автомобиль, его свойства
и методы, причем некоторые свойства
(_age
и _isMoving
)
прячет от клиентов данного класса. Это
и есть инкапсуляция, то есть данные
свойства доступны внутри класса любым
его методам и другим свойствам, но не
видимы за его пределами, так как клиенты
не должны их менять или получать их
значения напрямую.