Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Класс "записная книжка" 
:(
    Опции темы
ssoun
Дата 29.1.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



Доброго времени суток. Помогите пожалуйста. Завтра зачет. Очень много времени потратил на чтение всевозможной литературы. Но до меня никак не дойдут класса. Не даются и все. Расскажите, доступно, как дураку, дебилу - не важно, но чтобы я понял. Для чего классы?
Как их использовать, как создавать объекты? почему именно этот подход более удобен.

Вот есть задача например :
Описать класс записная книжка, предусмотреть возможность работы с произвольным числом записей, поиск записи по 
какому-либо признаку(например, фамили и т.д.), добавление и удаление записей, СОРТИРОВКА ПО РАЗНЫМ ПОЛЯМ. 
Написать программу, демонстрирующую работу с этим классом. 
Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.

Если как это сделать без классов я понимаю, то как это реализуется в классах понятия не имею. Спасибо заранее.
Извините, если просьба откровенно тупа, ну вот не могу и все...

Добавлено @ 20:07 
если кто-то отзовется помочь, прошу, приводите пожалуйста примеры для Билдера
PM MAIL   Вверх
Anikmar
Дата 29.1.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(ssoun @  29.1.2007,  19:59 Найти цитируемый пост)
Очень много времени потратил на чтение всевозможной литературы. 

И неужели ничего про классы?!

Интересно, что же вы читали?

В любой книжке есть примеры про классы!

Добавлено @ 20:15 
Создайте в Билдере новый проект. Там будет главная форма. Она является объектом класса.
PM MAIL ICQ   Вверх
threef
Дата 29.1.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: нет
Всего: 10



Класс - это тип данных, в которых программист обьединяет набор переменных и функций для обработки этих переменных. Пусть имеется структура и функция ее обработки:
Код

struct fraction{
int num,denom;
};
// эта функция нужна только при наличии структуры fraction
void print(fraction f)
{
   printf("(%d/%d)",f.num,f.denom);
}

main()
{
     fraction x;
     x.num=1;
     x.denom=2;
     print(x);
}
 

Функцию, которая пригодна только для обработки структуры включаем в структуру, как составную часть.
Код

struct fraction{
    int num,denom;
    // теперь нет необходимости в передаче параметра
    void print()
    {
          printf("(%d/%d)",num,denom);
    }
};

main()
{
     fraction x;
     x.num=1;
     x.denom=2;
     x.print();  // обращение к функции-члену класса
}
 

Функция, входящая в структуру(класс), имеет доступ ко всем переменным этого класса. Существует специальная функция - конструктор, которая используется для получения переменной- экземпляром класса начальных значений.
Код

struct fraction{
    int num,denom;
    fraction(int a,int b){num=a;denom=b;} // конструктор
    // теперь нет необходимости в передаче параметра
    void print()
    {
          printf("(%d/%d)",num,denom);
    }
};

main()
{
     fraction x(1,2);// здесь без нашего ведома :) вызывается конструктор
     x.print();  // обращение к функции-члену класса
}
 

Это хоть что-нибудь.
PM MAIL   Вверх
russians
Дата 29.1.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



Прежде, чем понять, что такое класс, надо понять, что такое структура. Возьми Шилдта и почитай, там как раз на моей памяти строятся ассоциации между ними.
Цитата
Создайте в Билдере новый проект. Там будет главная форма. Она является объектом класса. 

Отлично, теперь объясни ему, что такое объект ;)

Это сообщение отредактировал(а) russians - 29.1.2007, 21:29
PM MAIL   Вверх
nerezus
Дата 29.1.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

Отлично, теперь объясни ему, что такое объект ;)
 Объект - это экземпляр класса.

Аналогия:
класс — это чертеж, а объект — изделие, выполненное по этому чертежу.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Anikmar
Дата 29.1.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(russians @  29.1.2007,  21:26 Найти цитируемый пост)
Отлично, теперь объясни ему, что такое объект ;)

Да это я со зла написал! Такое ощущение, что человек только сегодня узнал, что у него завтра зачет! Мне не жалко объяснить тому, кто хочет знать. В данной ситуации больше смахивает на халяву.
PM MAIL ICQ   Вверх
Rockie
Дата 30.1.2007, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



Цитата(ssoun @  29.1.2007,  19:59 Найти цитируемый пост)
 почему именно этот подход более удобен.

Впринцыпе не факт что он более удобен. Все зависит от конкретной ситуации. По крайней мере любую задачу можно реализовать с использованием ОО подхода, либо без него. Думаю не ошибусь, если скажу что объектно ориентированный подход появился из-за того, что прогресс не стоит на месте: программы увеличивались до таких размеров, что поддерживать их стало очень трудно. ОО подход позволяет легче поддерживать код. Достаточно добавить новый метод в класс и получаем расширение функционала. При процедурном подходе возможно пришлось бы перелопачивать огромные массивы кода. Ну из принцыпов ООП - инкапсуляции, полиморфизма, стоитвыделить наследование - средство повторного использования кода. В процедурном варианте приходилось бы делать copy-paste: мало того что неудобно - в таком случае будут копироваться и множиться все ошибки.. 
В процедурном варианте есть функция, распечатывающая массив. В ООП варианте у нас есть класс, который содержит массив, и у которого есть метод "распечататься". То есть мы не говорим "функция, распечатай массив", а "массив, распечатай себя".

Это конечно же не все что можно сказать на эту тему. А вообще imho OOP это просто то, что сейчас в моде. И то, что его преподают в институтах вовсе не значит, что этот подход лучший. Думаю, лет через 15 про OOP будут вспоминать, как про очередной боян.




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
sergejzr
Дата 30.1.2007, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Внимание! Эта тема не соответствует правилам форума

Заголовок темы не отражает её суть, или несколько вопросов в одной теме.

Ознакомьтесь с правилами! http://forum.vingrad.ruhttp://forum.vingra...ct-SR/f-27.html[ММ]

Тема перенесена в Центр Помощи


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
ssoun
Дата 30.1.2007, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



threef
nerezus 
спасибо


Цитата(Anikmar @  29.1.2007,  23:09 Найти цитируемый пост)
Да это я со зла написал! Такое ощущение, что человек только сегодня узнал, что у него завтра зачет! Мне не жалко объяснить тому, кто хочет знать. В данной ситуации больше смахивает на халяву. 

совершенно верно. Именно сегодня и узнал.
Этот хвост у меня висел еще с осени, честно сказать, думал, что повисит еще, но вот преподавателю было угодно влупить его завтра, ну на данный момент уже сегодня.

Я читал книги Си ++ Builder за 21 день. Еще какая-то большая и толстая книга по билдеру, тем не менее, в этом аспекте так и не разобрался. Подумалось мне, что нужна практика. скачал Builder в задачах и примерах, ситуация с языком немного улучшилась, но опять же не по классам. 
Все потраченное время, я искал такую литературу, читал ее, искал из тех, что нашел более подходящие для себя описания, более доступное изложение. Все понятно и интересно. Но вот тормозят эти классы и все. Причем с работой со структурами ( на уровне лабораторных работ в университете) проблем никогда не было...


PM MAIL   Вверх
ivashkanet
Дата 30.1.2007, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 9
Всего: 149



 smile 
Цитата(ssoun @  29.1.2007,  23:36 Найти цитируемый пост)
Я читал книги Си ++ Builder за 21 день.

 smile  smile  smile  smile 
Как можно по такой книге что-нить понять  smile 

Извините за оффтоп --- не ужержался.
PM MAIL WWW ICQ   Вверх
EvgenZ
Дата 1.2.2007, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: 1
Всего: 11



//а мне понравилась книга С++ за 21 день, по моему отличная книга  smile 




--------------------
<удалено администрацией форума>
PM MAIL   Вверх
ivashkanet
Дата 1.2.2007, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 9
Всего: 149



 smile 
Цитата(EvgenZ @  31.1.2007,  23:02 Найти цитируемый пост)
//а мне понравилась книга С++ за 21 день, по моему отличная книга  

Возможно. Я ее не читал. 
Просто сами подумайте: "Довольно-таки сложный язык программирования выучить за 21?" Это ведь нереально. (без наличия хороших знаний в программировании). А ООП? Разве можно выучиться ООП за этот срок? Понять нах оно вообще нужно?
Выучить синтаксис, кидать контролы на форму, подписываться на ообработчики --- это можно и за меньший срок, но вот выучить С++  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1691 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.