<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Ботва для ИУ-5</title>
	<link>http://botva.dlussky.info</link>
	<description>все что касается учебы на ИУ-5</description>
	<pubDate>Mon, 03 Sep 2007 23:03:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.2</generator>
	<language>en</language>
			<item>
		<title>№30. Особенности сортировки файлов</title>
		<link>http://botva.dlussky.info/post/15/</link>
		<comments>http://botva.dlussky.info/post/15/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 21:37:05 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/15/</guid>
		<description><![CDATA[Особенность сортировки файлов в том, что на самом деле, несмотря на методы произвольного доступа мы не можем обратиться к необходимому адресу напрямую. Поэтому время доступа к разным частям файла отличается. Кроме того операции чтения-записи файлов гораздо медленнее аналогичных для оперативной памяти, поэтому знакомые нам алгоритмы применить не получится. Кроме того, файлы могут быть столь велики, [...]]]></description>
			<content:encoded><![CDATA[<p>Особенность сортировки файлов в том, что на самом деле, несмотря на методы произвольного доступа мы не можем обратиться к необходимому адресу напрямую. Поэтому время доступа к разным частям файла отличается. Кроме того операции чтения-записи файлов гораздо медленнее аналогичных для оперативной памяти, поэтому знакомые нам алгоритмы применить не получится. Кроме того, файлы могут быть столь велики, что не поместятся в опративную память, поэтому отсортировать их в оперативной памяти и вернуть на место может не получиться.</p>
<p>Все это приводит к тому, что для сортировки файлов применяют особые методы, при которых файл делится на части, которые помещаются в оперативную память, и с ними начинается мегашаманство.</p>
<p>Мы изучаем три метода шаманства:</p>
<ol>
<li>Сортировка файлов слиянием</li>
<li>Осциллирующая сортировка</li>
<li>Многофазная сортировка</li>
</ol>
<p>О них подробнее в других вопросах.</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/15/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№29. Прямой доступ к отдельным записям в файлах</title>
		<link>http://botva.dlussky.info/post/16/</link>
		<comments>http://botva.dlussky.info/post/16/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 21:11:29 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/16/</guid>
		<description><![CDATA[Бывает что и такое нужно.
Для этого пользуются функции seekg() для установки курсора чтения и seekp() для установки курсора записи.
У этих функций два параметра - смещение курсора и точка отсчета:
myFStr.seekp(смещение, точка отсчета);
//В качестве точки отсчета может выступать
//одна из трех констант:
ios::beg //начало файла
ios::cur //текущее положение курсора
ios::end //конец файла
Пример:

#include &#60;fstream.h&#62;
fstream myFStr;
myFStr.open(file);
char buf;
myFStr.seekg(12, ios::beg);
myFstr.get(buf);
cout&#60;&#60;"12й символ - "&#60;&#60;buf&#60;&#60;endl;
myFStr.seekp(12, ios::beg);
myFStr.put('');
cout&#60;&#60;"Теперь 12й [...]]]></description>
			<content:encoded><![CDATA[<p>Бывает что и такое нужно.</p>
<p>Для этого пользуются функции seekg() для установки курсора чтения и seekp() для установки курсора записи.</p>
<p>У этих функций два параметра - смещение курсора и точка отсчета:</p>
<pre><code>myFStr.seekp(смещение, точка отсчета);
//В качестве точки отсчета может выступать
//одна из трех констант:
ios::beg //начало файла
ios::cur //текущее положение курсора
ios::end //конец файла</code></pre>
<p>Пример:</p>
<pre><code>
#include &lt;fstream.h&gt;
fstream myFStr;
myFStr.open(file);
char buf;
myFStr.seekg(12, ios::beg);
myFstr.get(buf);
cout&lt;&lt;"12й символ - "&lt;&lt;buf&lt;&lt;endl;
myFStr.seekp(12, ios::beg);
myFStr.put('');
cout&lt;&lt;"Теперь 12й символ - нулевой))гыгы"&lt;endl;
myFStr.close();</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/16/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№27, 28. Файлы и потоки; методы открытия файлов для обмена информацией</title>
		<link>http://botva.dlussky.info/post/17/</link>
		<comments>http://botva.dlussky.info/post/17/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 20:11:48 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/17/</guid>
		<description><![CDATA[Ахха! Вот мы и подошли к весьма простой, но ОЧЕНЬ шаманской теме, ибо файловые потоки без бубна работайут крайне редко (в моих кривых руках))
Кстати, вообще говоря любая работа с файлами подразумевает использование потоков. И вообще, потоками реализован весь ввод-вывод в C/C++, но на лабах “потоковой” называется  работа с файлами через библиотеку fstream.
Итак.
Итак, для начала нужно как минимум подключить [...]]]></description>
			<content:encoded><![CDATA[<p>Ахха! Вот мы и подошли к весьма простой, но ОЧЕНЬ шаманской теме, ибо файловые потоки без бубна работайут крайне редко (в моих кривых руках))</p>
<p>Кстати, вообще говоря любая работа с файлами подразумевает использование потоков. И вообще, потоками реализован весь ввод-вывод в C/C++, но на лабах “потоковой” называется  работа с файлами через библиотеку fstream.<br />
Итак.</p>
<p>Итак, для начала нужно как минимум подключить библиотеку fstream.h:</p>
<pre><code>#include &lt;fstream.h&gt;</code></pre>
<p>Потом создать файловый поток для необходимого файла:</p>
<pre><code>ifstream myFStr; //для чтения         

ofstream myFStr; //для записи         

fstream myFStr; //для любых операций</code></pre>
<p>Потом нужно связать поток с нужным файлом:</p>
<pre><code>myFStr.open(filename [, метод открытия]);</code></pre>
<p>Методы открытия:</p>
<pre><code>ios::app
ios::ate
ios::binary
ios::in
ios::out
ios::trunc</code></pre>
<p>Их можно комбинировать логической операцией “ИЛИ”, т.е.</p>
<pre><code>myFStr.open(filename, ios::in | ios::out);         

//откроет файл filename для чтения и записи</code></pre>
<p>Но в 99% случаев вам это не понадобится, так как этот параметр задан по умолчанию (для каждого типа потоков соответствующий) и его можно опустить:</p>
<pre><code>myFStr.open(filename);</code></pre>
<p>Потом, по-хорошему, нужно проверить, открылся ли файл:</p>
<pre><code>if (!myFSTR)         

  {
    //Файл не открылся, паникуем
  }</code></pre>
<p>Еще можно проверить, открылся ли файл, вызвав функцию is_open();</p>
<pre><code>if (!myFSTR.is_open())         

  {
    //Файл не открылся, паникуем
  }</code></pre>
<p>Так типа корректнее.</p>
<p>В общем, после всех этих манипуляций мы получили рабочий файловый поток, открытый как нам надо.</p>
<p>Можем делать с ним все что хочется с помощью операций потокового ввода-вывода (&lt;&lt;    &gt;&gt;)<br />
Типа:</p>
<pre><code>myFStr&lt;&lt;"Тостеры"&lt;&lt;39,95&lt;&lt;endl;         

myFStr&lt;&lt;"Миксеры"&lt;&lt;24,95&lt;&lt;endl;</code></pre>
<p>а потом</p>
<pre><code>char item[20];         

float cost;
myFStr&gt;&gt;item&gt;&gt;cost;         

cout&lt;&lt;item&lt;&lt;" "&lt;&lt;cost&lt;&lt;endl;         

myFStr&gt;&gt;item&gt;&gt;cost;         

cout&lt;&lt;item&lt;&lt;" "&lt;&lt;cost&lt;&lt;endl;</code></pre>
<p>Теперь все это надо закрыть:</p>
<pre><code>myFStr.close();</code></pre>
<p>Вот<br />
Все<br />
Упарился</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/17/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№26. Основные правила построения абстрактных классов</title>
		<link>http://botva.dlussky.info/post/18/</link>
		<comments>http://botva.dlussky.info/post/18/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 19:12:37 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/18/</guid>
		<description><![CDATA[Семь заповедей Козлова (из странных лекций, с исправленными ошибками [по возможности])

 Виртуальная функция - функция, которую производный класс может переопределить (не перегрузить)
Реализация виртуальных функций класса (??? бред какой-то, это все, что написано в этом пункте)
При использовании виртуальных функций можно не переопределять их в наследниках, так ка одна реализация уже существует.
В общем случае функции-члены следует делать виртуальными
Конструкторы не могут быть [...]]]></description>
			<content:encoded><![CDATA[<p>Семь заповедей Козлова (из странных лекций, с исправленными ошибками [по возможности])</p>
<ol>
<li> Виртуальная функция - функция, которую производный класс может переопределить (не перегрузить)</li>
<li>Реализация виртуальных функций класса (??? бред какой-то, это все, что написано в этом пункте)</li>
<li>При использовании виртуальных функций можно не переопределять их в наследниках, так ка одна реализация уже существует.</li>
<li>В общем случае функции-члены следует делать виртуальными</li>
<li>Конструкторы не могут быть виртуальными.</li>
<li>Деструкторы могут быть виртуальными, чтобы потомки корректно освобождали виртуальную память</li>
<li>Тип виртуальной функции менять нельзя</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/18/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№24. Абстрактные классы и их применение</title>
		<link>http://botva.dlussky.info/post/19/</link>
		<comments>http://botva.dlussky.info/post/19/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 17:00:56 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/19/</guid>
		<description><![CDATA[Абстрактный класс (класс-интерфейс) - класс, содержащий хотя бы один  чисто виртуальный метод.
Используется для того, чтобы объявить способ обращения к методам производных классов, что позволяет использовать для хранения объектов производных классов унифицированный указатель на базовый класс (например, можно хранить объекты разных классов в одном массиве) .
//пример в 22м вопросе
//википедия про полиморфизм 
//википедия про абстрактный класс 
//википедия про интерфейсы в ООП 
]]></description>
			<content:encoded><![CDATA[<p>Абстрактный класс (класс-интерфейс) - класс, содержащий хотя бы один  <a TARGET="_blank" HREF="http://dlussky.info/?p=30">чисто виртуальный метод</a>.</p>
<p>Используется для того, чтобы объявить способ обращения к методам производных классов, что позволяет использовать для хранения объектов производных классов унифицированный указатель на базовый класс (например, можно хранить объекты разных классов в одном массиве) .</p>
<p><a TARGET="_blank" HREF="http://dlussky.info/?p=29">//пример в 22м вопросе</a></p>
<p><a TARGET="_blank" HREF="http://ru.wikipedia.org/wiki/Полиморфизм_в_языках_программирования#.D0.92_.D0.BE.D0.B1.D1.8A.D0.B5.D0.BA.D1.82.D0.BD.D0.BE-.D0.BE.D1.80.D0.B8.D0.B5.D0.BD.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.BD.D1.8B.D1.85_.D1.8F.D0.B7.D1.8B.D0.BA.D0.B0.D1.85">//википедия про полиморфизм </a></p>
<p><a HREF="http://ru.wikipedia.org/wiki/Абстрактный_класс" TARGET="_blank">//википедия про абстрактный класс </a></p>
<p><a HREF="http://ru.wikipedia.org/wiki/Интерфейс_(ООП)" TARGET="_blank">//википедия про интерфейсы в ООП </a></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/19/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№23. Виртуальные методы классов</title>
		<link>http://botva.dlussky.info/post/20/</link>
		<comments>http://botva.dlussky.info/post/20/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 16:52:48 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/20/</guid>
		<description><![CDATA[Методы, объявленные в базовом классе, которые могут быть переопределены в классе-наследнике.
Объявляются  ключевым словом virtual.
Если нет возможности создать адекватную реализацию  метода в базовом классе - используют чисто виртуальные методы, т.е. методы, которые не определены а лишь объявлены в базовом классе. Объявляется также, но с приравниванием к нулю. Пример:
virtual void some(int, char); //Виртуальный метод
virtual void some(int, char)=0; //Чисто виртуальный метод
 //википедия про виртуальные методы 
]]></description>
			<content:encoded><![CDATA[<p>Методы, объявленные в базовом классе, которые могут быть <strong>переопределены</strong> в классе-наследнике.</p>
<p>Объявляются  ключевым словом virtual.</p>
<p>Если нет возможности создать адекватную реализацию  метода в базовом классе - используют <strong>чисто</strong> виртуальные методы, т.е. методы, которые не определены а лишь объявлены в базовом классе. Объявляется также, но с приравниванием к нулю. Пример:</p>
<p>virtual void some(int, char); //Виртуальный метод</p>
<p>virtual void some(int, char)=0; //Чисто виртуальный метод</p>
<p><a HREF="http://ru.wikipedia.org/wiki/Виртуальный_метод" TARGET="_blank"> //википедия про виртуальные методы </a></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/20/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№22, 25. Раннее и позднее связывание классов</title>
		<link>http://botva.dlussky.info/post/21/</link>
		<comments>http://botva.dlussky.info/post/21/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 16:17:10 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/21/</guid>
		<description><![CDATA[Итак, в промежутках между анекдотами про “не с глаголами”, Козлов очень невнятно рассказал про связывание классов.
Насколько я понял, он подразумевает, что в данном случае связывание будет происходить между интерфейсным классом и конкретной реализацией. Т. е. если мы создаем  абстрактный класс interf, мы можем использовать указатель типа interf* для работы с любыми потомками класса interf. [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, в промежутках между анекдотами про “не с глаголами”, Козлов очень невнятно рассказал про связывание классов.</p>
<p>Насколько я понял, он подразумевает, что в данном случае связывание будет происходить между интерфейсным классом и конкретной реализацией. Т. е. если мы создаем  абстрактный класс interf, мы можем использовать указатель типа interf* для работы с любыми потомками класса interf. Соответственно, не всегда во время компиляции можно сказать, объект какого класса будет находиться в памяти по указателю. Этот случай называется поздним связыванием или связыванием “времени выполнения”. Если же все известно заранее - связывание раннее. Пример:</p>
<pre><code>class interf        

  {        

    public:        

     virtual int getlength()=0;        

  }        

  class square:interf
  {
    private:
     int side;
    public:
     int getlength()
      {
        return side;
      }
  }        

class rectangle:interf
  {
    private:
     int sideA, sideB;
    public:
     int getlength()
      {
        return (sideA&gt;sideB?sideA:sideB);
      }
  }   

//статическое (раннее) связывание
interf* staticPTR = new square();  

interf* dynamicPTR;
cout&gt;&gt;"Input q if it's square";
char isquad;
cin&gt;&gt;isquad;  

//динамическое (позднее) связывание
if (isquad)
{
ptr = new square();
}
else
{
ptr = new rectangle;
}</code></pre>
<p>//<a TARGET="_blank" HREF="http://www.firststeps.ru/theory/oop/r.php?10">еще инфа</a></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/21/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№21. Типы наследования классов</title>
		<link>http://botva.dlussky.info/post/22/</link>
		<comments>http://botva.dlussky.info/post/22/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 21:11:31 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/22/</guid>
		<description><![CDATA[Наследование может быть открытым (class child: public parent), закрытым (class child: private parent), защищенным (class child: protected parent) и множественным (class child: parent1, parent2)
Суть:
открытое наследование (public) - все открытые и защищенные члены базового класса становятся открытыми и защищенными членами производного класса. При этом закрытые члены базового класса производным не наследуются.
закрытое наследование (private) - все открытые и защищенные члены базового [...]]]></description>
			<content:encoded><![CDATA[<p>Наследование может быть открытым <strong>(class child: public parent)</strong>, закрытым <strong>(class child: private parent)</strong>, защищенным <strong>(class child: protected parent)</strong> и множественным<strong> (class child: parent1, parent2)</strong></p>
<p>Суть:</p>
<p><strong>открытое наследование (public)</strong> - все открытые и защищенные члены базового класса становятся открытыми и защищенными членами производного класса. При этом закрытые члены базового класса производным не наследуются.</p>
<p><strong>закрытое наследование (private)</strong> - все открытые и защищенные члены базового класса становятся закрытыми членами производного класса.</p>
<p><strong>защищенное наследование (protected)</strong> - все открытые и защищенные члены базового класса становятся защищенными членами производного класса.</p>
<p><strong>множественное наследование</strong> - производный класс одновременно наследует свойства нескольких базовых классов.</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/22/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№20. Доступность членов класса в классах-наследниках</title>
		<link>http://botva.dlussky.info/post/23/</link>
		<comments>http://botva.dlussky.info/post/23/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 18:57:34 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/23/</guid>
		<description><![CDATA[public и protected - доступны, private - нет.
That’s all.
]]></description>
			<content:encoded><![CDATA[<p><strong>public</strong> и <strong>protected</strong> - доступны, <strong>private</strong> - нет.</p>
<p>That’s all.</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/23/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№19. Отношения классов</title>
		<link>http://botva.dlussky.info/post/24/</link>
		<comments>http://botva.dlussky.info/post/24/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 18:41:13 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/24/</guid>
		<description><![CDATA[Отношения между двумя классами могут быть родственными (родитель-потомок) дружественными (friend) или нейтральными.
Знаете, что можно еще сказать по этому вопросу - пишите в коменты, буду благодарен.
]]></description>
			<content:encoded><![CDATA[<p>Отношения между двумя классами могут быть родственными (родитель-потомок) дружественными (friend) или нейтральными.</p>
<p>Знаете, что можно еще сказать по этому вопросу - пишите в коменты, буду благодарен.</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/24/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№18. Принципы объектно-ориентированного программирования</title>
		<link>http://botva.dlussky.info/post/25/</link>
		<comments>http://botva.dlussky.info/post/25/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 17:54:38 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/25/</guid>
		<description><![CDATA[См. статью))
Или википедию.
]]></description>
			<content:encoded><![CDATA[<p>См. <a HREF="http://dlussky.info/?attachment_id=11" TARGET="_blank">статью</a>))</p>
<p>Или <a HREF="http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование" TARGET="_blank">википедию</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/25/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№17. Функции потокового ввода и вывода объектов</title>
		<link>http://botva.dlussky.info/post/26/</link>
		<comments>http://botva.dlussky.info/post/26/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 17:52:50 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/26/</guid>
		<description><![CDATA[Ничего сложного нет, но напомню прототипы:
ostream&#38; operator&#60;&#60;(ostream&#38;, наш_класс);
istream&#38; operator&#62;&#62;(наш_класс, istream&#38;);
Кажется, так. Но! Я не уверен насчет порядка параметров в операторе&#62;&#62;.
Гуру, пишите в каментах, если я не прав.
]]></description>
			<content:encoded><![CDATA[<p>Ничего сложного нет, но напомню прототипы:</p>
<p>ostream&amp; operator&lt;&lt;(ostream&amp;, наш_класс);</p>
<p>istream&amp; operator&gt;&gt;(наш_класс, istream&amp;);</p>
<p>Кажется, так. Но! Я не уверен насчет порядка параметров в операторе&gt;&gt;.</p>
<p>Гуру, пишите в каментах, если я не прав.</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/26/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№16. Функции – друзья класса</title>
		<link>http://botva.dlussky.info/post/27/</link>
		<comments>http://botva.dlussky.info/post/27/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 17:42:22 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/27/</guid>
		<description><![CDATA[Они есть. Да.
А еще они не являются членами класса, но все равно имеют доступ к защищенным членам класса. Вооот.
Собственно все.
Объявляются они очень просто.
Нужно в классе поместить прототип функции, поставив  перед ним ключевое слово friend
]]></description>
			<content:encoded><![CDATA[<p>Они есть. Да.</p>
<p>А еще они не являются членами класса, но все равно имеют доступ к защищенным членам класса. Вооот.</p>
<p>Собственно все.</p>
<p>Объявляются они очень просто.</p>
<p>Нужно в классе поместить прототип функции, поставив  перед ним ключевое слово <strong>friend</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/27/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№13,14. Операторные функции – члены/не члены класса</title>
		<link>http://botva.dlussky.info/post/28/</link>
		<comments>http://botva.dlussky.info/post/28/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 17:37:54 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/28/</guid>
		<description><![CDATA[Перегрузить операторную функцию можно несколькими способами.
1. Как обычную функцию
2. Как функцию-член класса, для которого происходит перегрузка
3. Как функцию, дружественную к этому классу
Бинарный оператор-член класса вызывается объектом, стоящим слева от оператора, что может вызвать проблемы, когда нужный нам класс стоит справа от  оператора, т.е.:
obj + 100 //все работает, так как в объекте obj определена операторная функция-член operator+ 
100 + obj //не работает, так как в классе int не  ереопределен оператор +,  принимающий параметром объекты  нужного типа
Дружественная функция решает эту проблему, так как получает в качестве параметров и число 100 и объект obj
Недружественная функция вобще не катит, по причине отсутствия [...]]]></description>
			<content:encoded><![CDATA[<p>Перегрузить операторную функцию можно несколькими способами.</p>
<p>1. Как обычную функцию</p>
<p>2. Как функцию-член класса, для которого происходит перегрузка</p>
<p>3. Как функцию, дружественную к этому классу</p>
<p>Бинарный оператор-член класса вызывается объектом, стоящим слева от оператора, что может вызвать проблемы, когда нужный нам класс стоит справа от  оператора, т.е.:</p>
<p>obj + 100 //все работает, так как в объекте obj определена операторная функция-член <strong>operator+ </strong></p>
<p>100 + obj //не работает, так как в классе int не  ереопределен оператор +,  принимающий параметром объекты  нужного типа</p>
<p>Дружественная функция решает эту проблему, так как получает в качестве параметров и число 100 и объект obj</p>
<p>Недружественная функция вобще не катит, по причине отсутствия доступа к закрытым членам класса, а стало быть неудобством реализации.</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/28/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№12. Объекты как параметры функций</title>
		<link>http://botva.dlussky.info/post/29/</link>
		<comments>http://botva.dlussky.info/post/29/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 17:25:02 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/29/</guid>
		<description><![CDATA[Ответ - да))
]]></description>
			<content:encoded><![CDATA[<p>Ответ - <strong>да</strong>))</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/29/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№11. Встроенные методы классов</title>
		<link>http://botva.dlussky.info/post/30/</link>
		<comments>http://botva.dlussky.info/post/30/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 17:22:09 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/30/</guid>
		<description><![CDATA[Встроенные методы класса - методы, вызов которых при компиляции заменяется его телом.
Для объявления метода встроенным необходимо укзать перед его названием ключевое слово inline
]]></description>
			<content:encoded><![CDATA[<p>Встроенные методы класса - методы, вызов которых при компиляции заменяется его телом.</p>
<p>Для объявления метода встроенным необходимо укзать перед его названием ключевое слово <strong>inline</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/30/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№10. Статические поля данных и методы классов.</title>
		<link>http://botva.dlussky.info/post/31/</link>
		<comments>http://botva.dlussky.info/post/31/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 14:54:44 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/31/</guid>
		<description><![CDATA[Статические поля данных - поля, значения которых общие для всех объектов данного класса.
Статические методы - методы, которые могут работать со статическими данными.
И то и другое объявляется ключевым словом static 
]]></description>
			<content:encoded><![CDATA[<p>Статические поля данных - поля, значения которых общие для всех объектов данного класса.</p>
<p>Статические методы - методы, которые могут работать со статическими данными.</p>
<p>И то и другое объявляется ключевым словом <strong>static </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/31/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№09. Деструкторы классов</title>
		<link>http://botva.dlussky.info/post/32/</link>
		<comments>http://botva.dlussky.info/post/32/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 13:44:22 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/32/</guid>
		<description><![CDATA[Деструктор класса - специальный метод класса, который вызывается при уничтожении объекта.
Если деструктор не определяется в классе, любой компилятор неявно создает деструктор по умолчанию, который занимается очисткой памяти, занятой объектом.
Чтобы определить свой деструктор надо объявить в классе метод с именем именем типа ~имя_класса:
class cSample     

  {     

  [...]]]></description>
			<content:encoded><![CDATA[<p>Деструктор класса - специальный метод класса, который вызывается при уничтожении объекта.</p>
<p>Если деструктор не определяется в классе, любой компилятор неявно создает деструктор по умолчанию, который занимается очисткой памяти, занятой объектом.</p>
<p>Чтобы определить свой деструктор надо объявить в классе метод с именем именем типа ~имя_класса:</p>
<pre><code>class cSample     

  {     

    private:     int variable;     

public:     

     void cSample(); /*конструктор без параметра,
                будет вызываться при выполнении
                конструкций типа cSample sObj;*/     

     void ~cSample(); //деструктор    

  }</code></pre>
<p>Определять деструктор можно как в теле класса (компилятор обработает его как inline) так и вне его.</p>
<p><a TARGET="_blank" HREF="http://ru.wikipedia.org/wiki/Деструктор_(программирование)">//см. в википедии </a></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/32/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№08. Обеспечение доступа к защищённым членам класса.</title>
		<link>http://botva.dlussky.info/post/33/</link>
		<comments>http://botva.dlussky.info/post/33/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 13:34:34 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/33/</guid>
		<description><![CDATA[Доступ к защищенным членам класса нужно обеспечивать посредством открытых методов [вместо obj.var - obj.getvar() или  obj.putvar()]
Это главный принцип ООП - инкапсуляция.
]]></description>
			<content:encoded><![CDATA[<p>Доступ к защищенным членам класса нужно обеспечивать посредством открытых методов [вместо obj.var - obj.getvar() или  obj.putvar()]</p>
<p>Это главный принцип ООП - <a TARGET="_blank" HREF="http://ru.wikipedia.org/wiki/Инкапсуляция_(программирование)">инкапсуляция</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/33/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№07. Типы защищённости членов класса</title>
		<link>http://botva.dlussky.info/post/34/</link>
		<comments>http://botva.dlussky.info/post/34/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 13:30:36 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/34/</guid>
		<description><![CDATA[Члены класса могут иметь один из трех типов защищенности:
private - доступ к члену класса ограничен методами класса и дружественными функциями.
protected - то же самое, что и private, но доступ к  такому члену имеют и классы-наследники.
public - обращения допускаются из любого кода.
//см. в википедии
]]></description>
			<content:encoded><![CDATA[<p>Члены класса могут иметь один из трех типов защищенности:</p>
<p><strong>private </strong>- доступ к члену класса ограничен методами класса и дружественными функциями.</p>
<p><strong>protected </strong>- то же самое, что и private, но доступ к  такому члену имеют и классы-наследники.</p>
<p><strong>public </strong>- обращения допускаются из любого кода.</p>
<p><a HREF="http://ru.wikipedia.org/wiki/Класс_(программирование)#.D0.A7.D0.BB.D0.B5.D0.BD.D1.8B_.D0.BA.D0.BB.D0.B0.D1.81.D1.81.D0.BE.D0.B2" TARGET="_blank">//см. в википедии</a></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/34/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№06. Конструкторы классов.</title>
		<link>http://botva.dlussky.info/post/35/</link>
		<comments>http://botva.dlussky.info/post/35/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 11:49:44 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/35/</guid>
		<description><![CDATA[Конструктор класса - специальный метод класса, который вызывается при инициализации объекта.
Если конструктор не определяется в классе, любой компилятор неявно создает конструктор по умолчанию, который занимается выделением места под объект.
Чтобы определить свой конструктор надо объявить в классе метод с именем этого класса и любыми необходимыми параметрами. Можно объявить несколько конструкторов с разным набором парамтером (перегрузка конструкторов).
class cSample  {private:     int variable; 

public: 

void cSample(); /*конструктор без параметра, 

   [...]]]></description>
			<content:encoded><![CDATA[<p>Конструктор класса - специальный метод класса, который вызывается при инициализации объекта.</p>
<p>Если конструктор не определяется в классе, любой компилятор неявно создает конструктор по умолчанию, который занимается выделением места под объект.</p>
<p>Чтобы определить свой конструктор надо объявить в классе метод с именем этого класса и любыми необходимыми параметрами. Можно объявить несколько конструкторов с разным набором парамтером (перегрузка конструкторов).</p>
<pre><code>class cSample  {private:     int variable; 

public: 

void cSample(); /*конструктор без параметра, 

                будет вызываться при выполнении 

                конструкций типа cSample sampObject; */ 

void cSample(int); //конструктор с параметром 

}</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/35/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№04,05 Классы и объекты; члены класса – методы и поля.</title>
		<link>http://botva.dlussky.info/post/36/</link>
		<comments>http://botva.dlussky.info/post/36/#comments</comments>
		<pubDate>Sun, 10 Jun 2007 08:56:06 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/36/</guid>
		<description><![CDATA[См. статью
]]></description>
			<content:encoded><![CDATA[<p>См. <a HREF="http://dlussky.info/wp-content/files/2007/06/oop.pdf" TITLE="Статья об объектно-ориентированном подходе к программированию.">статью</a></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/36/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№02,03. Заголовочные файлы классов; файлы реализации классов.</title>
		<link>http://botva.dlussky.info/post/37/</link>
		<comments>http://botva.dlussky.info/post/37/#comments</comments>
		<pubDate>Sun, 10 Jun 2007 08:42:15 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/37/</guid>
		<description><![CDATA[ Вопросы нупские совершенно, но по-видимому тут необходимо сказать, что нужно разделять объявление и определение класса, т.е.
someclass.h: //заголовочный файл класса
class someClass
{
  private:
    //переменные
    int* something = new int[10];
  public:
    //только заголовки методов

    void delete();
    int getNumber(char*);
}
someclass.cpp: //файл реализации класса
void someClass::delete()
{
  delete []something;
}       [...]]]></description>
			<content:encoded><![CDATA[<p> Вопросы нупские совершенно, но по-видимому тут необходимо сказать, что нужно разделять объявление и определение класса, т.е.</p>
<p><strong><em>someclass.h: </em></strong>//заголовочный файл класса</p>
<pre><code>class someClass
{
  private:
    //переменные
    int* something = new int[10];
  public:
    //только заголовки методов

    void delete();
    int getNumber(char*);
}</code></pre>
<p><strong><em>someclass.cpp: </em></strong>//файл реализации класса</p>
<pre><code>void someClass::delete()
{
  delete []something;
}         

void someClass::getNumber(char* str)
{
  return strlen(str);
}</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/37/feed/</wfw:commentRss>
		</item>
		<item>
		<title>№01. Структуры и классы языка C++</title>
		<link>http://botva.dlussky.info/post/38/</link>
		<comments>http://botva.dlussky.info/post/38/#comments</comments>
		<pubDate>Fri, 08 Jun 2007 21:05:11 +0000</pubDate>
		<dc:creator>Fenix</dc:creator>
		
		<category><![CDATA[К экзамену по информатике]]></category>

		<guid isPermaLink="false">http://botva.dlussky.info/post/38/</guid>
		<description><![CDATA[Статья об объектно-ориентированном подходе к программированию.
К сожалению про Паскаль, но сам подход ООП объясняется крайне доходчиво.

]]></description>
			<content:encoded><![CDATA[<p><a TITLE="Статья об объектно-ориентированном подходе к программированию." REL="attachment wp-att-11" HREF="http://dlussky.info/?attachment_id=11">Статья об объектно-ориентированном подходе к программированию.</a></p>
<p>К сожалению про Паскаль, но сам подход ООП объясняется крайне доходчиво.</p>
<p><a TITLE="Статья об объектно-ориентированном подходе к программированию." REL="attachment wp-att-11" HREF="http://dlussky.info/?attachment_id=11"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://botva.dlussky.info/post/38/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
