<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.2" -->
<rss version="0.92">
<channel>
	<title>Ботва для ИУ-5</title>
	<link>http://botva.dlussky.info</link>
	<description>все что касается учебы на ИУ-5</description>
	<lastBuildDate>Mon, 03 Sep 2007 23:03:18 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>№30. Особенности сортировки файлов</title>
		<description>Особенность сортировки файлов в том, что на самом деле, несмотря на методы произвольного доступа мы не можем обратиться к необходимому адресу напрямую. Поэтому время доступа к разным частям файла отличается. Кроме того операции чтения-записи файлов гораздо медленнее аналогичных для оперативной памяти, поэтому знакомые нам алгоритмы применить не получится. Кроме того, ...</description>
		<link>http://botva.dlussky.info/post/15/</link>
			</item>
	<item>
		<title>№29. Прямой доступ к отдельным записям в файлах</title>
		<description>Бывает что и такое нужно.

Для этого пользуются функции seekg() для установки курсора чтения и seekp() для установки курсора записи.

У этих функций два параметра - смещение курсора и точка отсчета:
myFStr.seekp(смещение, точка отсчета); 
//В качестве точки отсчета может выступать 
//одна из трех констант: 
ios::beg //начало файла 
ios::cur //текущее положение курсора 
ios::end //конец ...</description>
		<link>http://botva.dlussky.info/post/16/</link>
			</item>
	<item>
		<title>№27, 28. Файлы и потоки; методы открытия файлов для обмена информацией</title>
		<description>Ахха! Вот мы и подошли к весьма простой, но ОЧЕНЬ шаманской теме, ибо файловые потоки без бубна работайут крайне редко (в моих кривых руках))

Кстати, вообще говоря любая работа с файлами подразумевает использование потоков. И вообще, потоками реализован весь ввод-вывод в C/C++, но на лабах “потоковой” называется  работа с файлами через библиотеку ...</description>
		<link>http://botva.dlussky.info/post/17/</link>
			</item>
	<item>
		<title>№26. Основные правила построения абстрактных классов</title>
		<description>Семь заповедей Козлова (из странных лекций, с исправленными ошибками [по возможности])

	 Виртуальная функция - функция, которую производный класс может переопределить (не перегрузить)
	Реализация виртуальных функций класса (??? бред какой-то, это все, что написано в этом пункте)
	При использовании виртуальных функций можно не переопределять их в наследниках, так ка одна реализация уже существует.
	В общем случае функции-члены следует ...</description>
		<link>http://botva.dlussky.info/post/18/</link>
			</item>
	<item>
		<title>№24. Абстрактные классы и их применение</title>
		<description>Абстрактный класс (класс-интерфейс) - класс, содержащий хотя бы один  чисто виртуальный метод.

Используется для того, чтобы объявить способ обращения к методам производных классов, что позволяет использовать для хранения объектов производных классов унифицированный указатель на базовый класс (например, можно хранить объекты разных классов в одном массиве) .

//пример в 22м вопросе

//википедия про полиморфизм 

//википедия про абстрактный класс 

//википедия про интерфейсы в ООП  </description>
		<link>http://botva.dlussky.info/post/19/</link>
			</item>
	<item>
		<title>№23. Виртуальные методы классов</title>
		<description>Методы, объявленные в базовом классе, которые могут быть переопределены в классе-наследнике.

Объявляются  ключевым словом virtual.

Если нет возможности создать адекватную реализацию  метода в базовом классе - используют чисто виртуальные методы, т.е. методы, которые не определены а лишь объявлены в базовом классе. Объявляется также, но с приравниванием к нулю. Пример:

virtual void some(int, char); //Виртуальный метод

virtual void some(int, char)=0; //Чисто виртуальный метод

 //википедия про виртуальные методы  </description>
		<link>http://botva.dlussky.info/post/20/</link>
			</item>
	<item>
		<title>№22, 25. Раннее и позднее связывание классов</title>
		<description>Итак, в промежутках между анекдотами про “не с глаголами”, Козлов очень невнятно рассказал про связывание классов.

Насколько я понял, он подразумевает, что в данном случае связывание будет происходить между интерфейсным классом и конкретной реализацией. Т. е. если мы создаем  абстрактный класс interf, мы можем использовать указатель типа interf* для работы ...</description>
		<link>http://botva.dlussky.info/post/21/</link>
			</item>
	<item>
		<title>№21. Типы наследования классов</title>
		<description>Наследование может быть открытым (class child: public parent), закрытым (class child: private parent), защищенным (class child: protected parent) и множественным (class child: parent1, parent2)

Суть:

открытое наследование (public) - все открытые и защищенные члены базового класса становятся открытыми и защищенными членами производного класса. При этом закрытые члены базового класса производным не наследуются.

закрытое наследование (private) - все ...</description>
		<link>http://botva.dlussky.info/post/22/</link>
			</item>
	<item>
		<title>№20. Доступность членов класса в классах-наследниках</title>
		<description>public и protected - доступны, private - нет.

That’s all. </description>
		<link>http://botva.dlussky.info/post/23/</link>
			</item>
	<item>
		<title>№19. Отношения классов</title>
		<description>Отношения между двумя классами могут быть родственными (родитель-потомок) дружественными (friend) или нейтральными.

Знаете, что можно еще сказать по этому вопросу - пишите в коменты, буду благодарен. </description>
		<link>http://botva.dlussky.info/post/24/</link>
			</item>
	<item>
		<title>№18. Принципы объектно-ориентированного программирования</title>
		<description>См. статью))

Или википедию. </description>
		<link>http://botva.dlussky.info/post/25/</link>
			</item>
	<item>
		<title>№17. Функции потокового ввода и вывода объектов</title>
		<description>Ничего сложного нет, но напомню прототипы:

ostream&#38; operator&#60;&#60;(ostream&#38;, наш_класс);

istream&#38; operator&#62;&#62;(наш_класс, istream&#38;);

Кажется, так. Но! Я не уверен насчет порядка параметров в операторе&#62;&#62;.

Гуру, пишите в каментах, если я не прав. </description>
		<link>http://botva.dlussky.info/post/26/</link>
			</item>
	<item>
		<title>№16. Функции – друзья класса</title>
		<description>Они есть. Да.

А еще они не являются членами класса, но все равно имеют доступ к защищенным членам класса. Вооот.

Собственно все.

Объявляются они очень просто.

Нужно в классе поместить прототип функции, поставив  перед ним ключевое слово friend </description>
		<link>http://botva.dlussky.info/post/27/</link>
			</item>
	<item>
		<title>№13,14. Операторные функции – члены/не члены класса</title>
		<description>Перегрузить операторную функцию можно несколькими способами.

1. Как обычную функцию

2. Как функцию-член класса, для которого происходит перегрузка

3. Как функцию, дружественную к этому классу

Бинарный оператор-член класса вызывается объектом, стоящим слева от оператора, что может вызвать проблемы, когда нужный нам класс стоит справа от  оператора, т.е.:

obj + 100 //все работает, так как в объекте obj определена операторная функция-член operator+ 

100 + obj //не работает, так как в классе int не  ереопределен оператор +,  принимающий параметром объекты  нужного типа

Дружественная функция решает эту проблему, так как получает в качестве параметров и число 100 и объект obj

Недружественная функция вобще ...</description>
		<link>http://botva.dlussky.info/post/28/</link>
			</item>
	<item>
		<title>№12. Объекты как параметры функций</title>
		<description>Ответ - да)) </description>
		<link>http://botva.dlussky.info/post/29/</link>
			</item>
	<item>
		<title>№11. Встроенные методы классов</title>
		<description>Встроенные методы класса - методы, вызов которых при компиляции заменяется его телом.

Для объявления метода встроенным необходимо укзать перед его названием ключевое слово inline </description>
		<link>http://botva.dlussky.info/post/30/</link>
			</item>
	<item>
		<title>№10. Статические поля данных и методы классов.</title>
		<description>Статические поля данных - поля, значения которых общие для всех объектов данного класса.

Статические методы - методы, которые могут работать со статическими данными.

И то и другое объявляется ключевым словом static  </description>
		<link>http://botva.dlussky.info/post/31/</link>
			</item>
	<item>
		<title>№09. Деструкторы классов</title>
		<description>Деструктор класса - специальный метод класса, который вызывается при уничтожении объекта.

Если деструктор не определяется в классе, любой компилятор неявно создает деструктор по умолчанию, который занимается очисткой памяти, занятой объектом.

Чтобы определить свой деструктор надо объявить в классе метод с именем именем типа ~имя_класса:
class cSample     

  {  ...</description>
		<link>http://botva.dlussky.info/post/32/</link>
			</item>
	<item>
		<title>№08. Обеспечение доступа к защищённым членам класса.</title>
		<description>Доступ к защищенным членам класса нужно обеспечивать посредством открытых методов [вместо obj.var - obj.getvar() или  obj.putvar()]

Это главный принцип ООП - инкапсуляция. </description>
		<link>http://botva.dlussky.info/post/33/</link>
			</item>
	<item>
		<title>№07. Типы защищённости членов класса</title>
		<description>Члены класса могут иметь один из трех типов защищенности:

private - доступ к члену класса ограничен методами класса и дружественными функциями.

protected - то же самое, что и private, но доступ к  такому члену имеют и классы-наследники.

public - обращения допускаются из любого кода.

//см. в википедии </description>
		<link>http://botva.dlussky.info/post/34/</link>
			</item>
	<item>
		<title>№06. Конструкторы классов.</title>
		<description>Конструктор класса - специальный метод класса, который вызывается при инициализации объекта.

Если конструктор не определяется в классе, любой компилятор неявно создает конструктор по умолчанию, который занимается выделением места под объект.

Чтобы определить свой конструктор надо объявить в классе метод с именем этого класса и любыми необходимыми параметрами. Можно объявить несколько конструкторов с разным набором парамтером (перегрузка конструкторов).
class cSample  {private:     int variable; 

public: 

void cSample(); ...</description>
		<link>http://botva.dlussky.info/post/35/</link>
			</item>
	<item>
		<title>№04,05 Классы и объекты; члены класса – методы и поля.</title>
		<description>См. статью </description>
		<link>http://botva.dlussky.info/post/36/</link>
			</item>
	<item>
		<title>№02,03. Заголовочные файлы классов; файлы реализации классов.</title>
		<description> Вопросы нупские совершенно, но по-видимому тут необходимо сказать, что нужно разделять объявление и определение класса, т.е.

someclass.h: //заголовочный файл класса
class someClass 
{ 
  private: 
    //переменные
    int* something = new int[10];
  public: 
    //только заголовки методов

    void delete(); 
    int getNumber(char*); 
}
someclass.cpp: //файл реализации ...</description>
		<link>http://botva.dlussky.info/post/37/</link>
			</item>
	<item>
		<title>№01. Структуры и классы языка C++</title>
		<description>Статья об объектно-ориентированном подходе к программированию.

К сожалению про Паскаль, но сам подход ООП объясняется крайне доходчиво.

 </description>
		<link>http://botva.dlussky.info/post/38/</link>
			</item>
</channel>
</rss>
