|
|
|
| Классы, наверное самое главное что нужно знать в С++...
Так вот..я не вообще не понимаю как их использовать..
Читал много книг для нвичков и все про классы, но понять не пойму...
не могли бы вы объяснить что такое классы, как и для чего их использовать, какие они бывают и прочеее...
Буду очень благодарен
Пожалуйста объясните сами, не давыайте ссылки на книги..
cheops, люблю ваши ответы :) | |
|
|
|
|
|
|
|
для: SnooPI
(11.04.2007 в 19:00)
| | Классы - это объёмная тема, однако приступая к изучению объектно-ориентированного подхода дейстивительно не плохо знать зачем они потребовались. Каждый язык программирования обладает переменными так называемых базовых типов, в C++ это char, int, float, double и т.п. Переменные можно сладывать, вычитать, передавать в качестве параметров функций, объединять в массивы - программисты всё это очень хорошо умеют и за долгие годы подготовили просто горы готового кода по самым разным аспектам обработки таких переменных.
Однако, программируя сложную задачу, вы оперируете на самом деле не переменными, а более сложными и крупными объектами, например, клиент, работник, договор и т.п. В языке программирования нет переменной типа договор и быть не может... вы вынуждены строить объёмные непонятные стороннему программисту конструкции... а как бы хорошо было заключать договор в программе путём сложения переменной типа "клиент" и переменной типа "работник"
договор = клиент + работник; |
Эта строка не только очевидна, она позволяет "думать" в рамках задачи, а не в рамках компьютерных терминов: переменная, массив, файл и т.п.
Именно за этим было введено объектно-оринетированное программирование - оно позволяет вам вводить свои собственные типы данных (классы), а затем объявлять переменные этого типа (объекты), снижая сложность и объём кода. Если вы для них ещё перегружаете операторы, то они вообще становятся похожи на обычные переменные, которые можно складывать, вычитать, выводить в стандарный поток и т.п. | |
|
|
|
|
|
|
|
для: cheops
(11.04.2007 в 19:31)
| | Ой, я еще С++ не знаю совсем, мне ООП пока не надо :)
Я имел ввиду вот эти классы...как там в книгах в главе начальной
ЧТо-то типа этого
class lalala (
//код
}
и что-то там такое
class::lalala(и здесь чтото){
//код
}
Вот освсем не понимаю...
До чего же сложный язык С++, а знать его очень хочу.... | |
|
|
|
|
|
|
|
для: SnooPI
(11.04.2007 в 23:33)
| | А что вызывает затруднение (просто ткните в это :)? В принципе об этом и речь, вы задаёте новый тип данных lalala, и чтобы файл с определением класса не разрастался до непомерных велечин, реализацию отдельных методов выносят за его пределы, используя префикс lalala:: | |
|
|
|
|
|
|
|
для: SnooPI
(11.04.2007 в 23:33)
| | >Ой, я еще С++ не знаю совсем, мне ООП пока не надо :)
>Я имел ввиду вот эти классы...как там в книгах в главе начальной
>ЧТо-то типа этого
>class lalala (
>//код
>}
>и что-то там такое
>class::lalala(и здесь чтото){
>//код
>}
>
>Вот освсем не понимаю...
>До чего же сложный язык С++, а знать его очень хочу....
Тут class lalala это объявление класса с именем lalala
так будет выглятеть конструктор класса это его описание - объявление должно быть
в теле класса. Вот констракото с параметрами:
lalala ::lalala(int переменная) {
переменнаяКласса=переменная; // это конструктор с параметрами но может быть без параметров
} | |
|
|
|
|
|
|
|
для: 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 - создаеш объек типа этого класса | |
|
|
|