Форум: Форум C++Разное
Новые темы: 00
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Классы
 
 автор: SnooPI   (11.04.2007 в 19:00)   письмо автору
 
 

Классы, наверное самое главное что нужно знать в С++...
Так вот..я не вообще не понимаю как их использовать..
Читал много книг для нвичков и все про классы, но понять не пойму...
не могли бы вы объяснить что такое классы, как и для чего их использовать, какие они бывают и прочеее...
Буду очень благодарен
Пожалуйста объясните сами, не давыайте ссылки на книги..
cheops, люблю ваши ответы :)

  Ответить  
 
 автор: cheops   (11.04.2007 в 19:31)   письмо автору
 
   для: SnooPI   (11.04.2007 в 19:00)
 

Классы - это объёмная тема, однако приступая к изучению объектно-ориентированного подхода дейстивительно не плохо знать зачем они потребовались. Каждый язык программирования обладает переменными так называемых базовых типов, в C++ это char, int, float, double и т.п. Переменные можно сладывать, вычитать, передавать в качестве параметров функций, объединять в массивы - программисты всё это очень хорошо умеют и за долгие годы подготовили просто горы готового кода по самым разным аспектам обработки таких переменных.

Однако, программируя сложную задачу, вы оперируете на самом деле не переменными, а более сложными и крупными объектами, например, клиент, работник, договор и т.п. В языке программирования нет переменной типа договор и быть не может... вы вынуждены строить объёмные непонятные стороннему программисту конструкции... а как бы хорошо было заключать договор в программе путём сложения переменной типа "клиент" и переменной типа "работник"
договор = клиент + работник;

Эта строка не только очевидна, она позволяет "думать" в рамках задачи, а не в рамках компьютерных терминов: переменная, массив, файл и т.п.

Именно за этим было введено объектно-оринетированное программирование - оно позволяет вам вводить свои собственные типы данных (классы), а затем объявлять переменные этого типа (объекты), снижая сложность и объём кода. Если вы для них ещё перегружаете операторы, то они вообще становятся похожи на обычные переменные, которые можно складывать, вычитать, выводить в стандарный поток и т.п.

  Ответить  
 
 автор: SnooPI   (11.04.2007 в 23:33)   письмо автору
 
   для: cheops   (11.04.2007 в 19:31)
 

Ой, я еще С++ не знаю совсем, мне ООП пока не надо :)
Я имел ввиду вот эти классы...как там в книгах в главе начальной
ЧТо-то типа этого
class lalala (
//код
}
и что-то там такое
class::lalala(и здесь чтото){
//код
}

Вот освсем не понимаю...
До чего же сложный язык С++, а знать его очень хочу....

  Ответить  
 
 автор: cheops   (12.04.2007 в 15:48)   письмо автору
 
   для: SnooPI   (11.04.2007 в 23:33)
 

А что вызывает затруднение (просто ткните в это :)? В принципе об этом и речь, вы задаёте новый тип данных lalala, и чтобы файл с определением класса не разрастался до непомерных велечин, реализацию отдельных методов выносят за его пределы, используя префикс lalala::

  Ответить  
 
 автор: vvmcpp   (19.01.2011 в 09:39)   письмо автору
 
   для: SnooPI   (11.04.2007 в 23:33)
 

>Ой, я еще С++ не знаю совсем, мне ООП пока не надо :)
>Я имел ввиду вот эти классы...как там в книгах в главе начальной
>ЧТо-то типа этого
>class lalala (
>//код
>}
>и что-то там такое
>class::lalala(и здесь чтото){
>//код
>}
>
>Вот освсем не понимаю...
>До чего же сложный язык С++, а знать его очень хочу....

Тут class lalala это объявление класса с именем lalala
так будет выглятеть конструктор класса это его описание - объявление должно быть
в теле класса. Вот констракото с параметрами:
lalala ::lalala(int переменная) {

переменнаяКласса=переменная; // это конструктор с параметрами но может быть без параметров
}

  Ответить  
 
 автор: vvmcpp   (11.01.2011 в 17:10)   письмо автору
 
   для: SnooPI   (11.04.2007 в 19:00)
 

Просьба поправить если у меня есть какие заблуждения.
Немного раскажу своими словами о классах.
Класс - это некоторая формочка, можно представить его как форма для выпечки например печеньев.
А сами печенья это обекты которые создаются из данного класса.
В общем класс это тип данных и некоторые действия с ним(всё в одном флаконе).
вот например когда у тебя тип данных int , то ты пишеш int a,d, и так далее.
так же и с классом когда ты его написал или он у тебя есть то
будет подобно.
ТвойКласс Объект;
Это создание объекта. Объект в данном случае создается в стеке.
Создание объекта динамически:
// создание одъекта динамически это вроде как в данамической памяти
ИмяКласса *ИмяОбъекта=new ИмяКласса;

Удалить объект потом нужно так:

delete ИмяОбъекта;

Ну это все я понаписал упрощенно. Нужно конечно много про классы читать. Потому как есть конструкторы у них еще, потом наследование, потом особые классы типа интерфейсов,
В общем класс сначала описываеш напрмер
Class A{
public:
//конструктор и деструктор тут я и объявление и описание всё вместе , но часто бывает
// нужно тут делать только объявление конструктора а описание делать в другом месте
// чтобы потом ускорить просмотр программы и для удобства
A(){}
~A(){}
// методы класса тут передача идет по значению а не через указатель
// но бывает нужно сделать через ссылку или указатель
void Set_i(int i_to_i){
i=i_to_i;
}
int Get_i( ){return i;}
// переменные класса они не обязательно должны быть private это уже как тебе нужно
private:
int i;
};


потом уже в программе создаеш объекты этого класса
например
A myA; - это будет объект класса А
Или через new - создаеш объек типа этого класса

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования