Форум программистов, компьютерный форум CyberForum.ru

Классы - что это? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вызов стороннего приложения без полного пути http://www.cyberforum.ru/cpp-beginners/thread1235245.html
Всем доброго времени суток! Подсобите в следующем вопросе пожалуйста: Язык C++ среда разработки Visual Studio 2012, мне требуется запустить стороннее приложение (.exe) с параметрами, аналогия со строкой cmd : lspl-find.exe -i arg1 -p arg2 -o arg 3 arg4, перерыл кучу инфы по этому поводу, нашел множество функций выполняющих данную задачу (spawnl, execl, ShellExecute, CreateProcess, ...), однако,...
C++ Неопределенная ссылка при многофайловой реализации шаблона Здравствуйте уважаемые форумчане. И снова я что то делаю не так. Есть 3 файла main.cpp - сама программа, Larray.h - объявление класса, Larray.cpp - собственно сам класс. Larray.h #ifndef LARRAY_H_ #define LARRAY_H_ #include <iostream> http://www.cyberforum.ru/cpp-beginners/thread1235242.html
C++ Как отключить автоматическое добавление "_" "@" "number" к имени экстернального метода?
Здраствуйте! Подскажите как это делается? (вопрос в названии темы) среда : VS2013 проект компилируется в dll файл в начале обьявил: #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <conio.h>
C++ Каков современный подход для работы со строками
Здравствуйте, хотел узнать современный подход для работы со строками. В С++ так же используется библиотека #include <string>, а методы для копирования и сравнивания типа strcmp(...) и strcpy()?
C++ По Лафору пример, программа останавливается на строке delete[] name; http://www.cyberforum.ru/cpp-beginners/thread1235214.html
#include <iostream> #include <cstring> char *getname(void); using namespace std; int main() { char *name = getname(); cout << name << endl;
C++ Как работать с сегментом данных файла exe? Здравствуйте! Такой вопрос: возможно ли получить данные из сегменты данных файла exe другой программой? Скажем, к примеру, указатель на структуру? Или получить значение по указателю или скопировать данные? Если да то расскажите как или поделитесь ссылкой, ибо на просторах интернета подобной информации не нашел. подробнее

Показать сообщение отдельно
gru74ik
Модератор
Эксперт CЭксперт С++
3978 / 1725 / 193
Регистрация: 20.02.2013
Сообщений: 4,827
Записей в блоге: 21
28.07.2014, 16:39     Классы - что это?
Рекомендую книгу Харви М. Дейтел, Пол Дж. Дейтел "Как программировать на C++" (2008, 5-е издание).
Там про классы почти что с самого начала всё разжёвано очень подробно. И в целом книга достойная.
Вот оттуда выдержка:
Кликните здесь для просмотра всего текста

3.2. Классы, объекты, элемент-функции и элементы данных
Чтобы помочь вам укрепить свое понимание классов и их содержимого,
о чем говорилось в разделе 1.17, мы начнем с простой аналогии.
Предположим, вы хотите поехать на машине; вы разгоняете ее, нажимая на
акселератор. Что должно произойти, прежде чем вы сможете это сделать? Вообще
говоря, чтобы вы могли ездить на машине, кто-то должен был спроектировать и
собрать ее. Автомобиль начинается с инженерных эскизов и чертежей, похожих
на планы дома. В эти чертежи входит конструкция педали акселератора, с
помощью которой водитель разгоняет машину. В некотором смысле эта педаль
«скрывает» за собой сложные механизмы, которые в действительности
заставляют машину ехать быстрее, точно так же, как педаль тормоза «скрывает»
механизмы, замедляющие машину, руль «скрывает» механизмы,
поворачивающие машину и т.д. Все это позволяет людям, мало или вообще ничего не
знающим о том, как устроен автомобиль, с легкостью водить его, просто нажимая
на акселератор и тормоз, поворачивая руль, переключая передачи и
манипулируя прочими простыми, привычными пользователю «интерфейсами»
сложных внутренних механизмов.
К сожалению, нельзя ездить на чертежах автомобиля; прежде чем вы
поедете, автомобиль должен быть собран согласно описывающим его чертежам.
В полностью собранном автомобиле будет настоящая педаль акселератора,
предназначенная для его ускорения. Но и этого недостаточно — автомобиль не
будет разгоняться сам собой; для этого нужно, чтобы водитель нажимал на эту
педаль, приказывая автомобилю ехать быстрее.
Теперь давайте воспользуемся примером с автомобилем, чтобы представить
ключевые концепции объектно-ориентированного программирования, которым
посвящен данный раздел. Чтобы выполнить в программе некоторую задачу,
требуется функция (такая, как функции main из 2-й главы). Функция
описывает механизмы, которые в действительности эту задачу выполняю!1. Функция
скрывает от пользователя выполняемые ею сложные задачи, точно так же как
акселератор скрывает от водителя сложные механизмы, заставляющие
автомобиль ускоряться. В C++ мы начинаем с создания программной единицы,
называемой классом, в которую входит функция — как в чертежи автомобиля
входит конструкция педали акселератора. Как вы помните, в разделе 1.17
функция, принадлежащая классу, называлась его элемент-функцией. В классе
предусматривают одну или более элемент-функций, предназначенных для
выполнения задач класса. Например, класс, представляющий банковский счет,
может содержать одну элемент-функцию для внесения денег на счет, другую
для снятия денег со счета и третью — для справок о текущем состоянии счета.
Точно так же, как нельзя ездить на чертежах автомобиля, нельзя «ездить»
на классе. Как кто-то должен был собрать автомобиль по чертежам, прежде
чем вы сможете на нем поехать, так и вы должны создать объект класса,
прежде чем программа сможет выполнять описываемые классом задачи. Заметьте,
что из одного класса можно точно так же породить много объектов, как по
одним и тем же чертежам — собрать много автомобилей.
Когда вы ведете машину, нажатие акселератора посылает машине
сообщение — ехать быстрее. Аналогичным образом вы посылаете объекту сообщения,
каждое из которых называется вызовом элемент-функции и приказывает эле-
мент-функции объекта выполнить ее задачу. Часто это называют запросом
услуг у объекта.
Выше мы пользовались аналогией с автомобилем, чтобы представить класс,
объекты и элементы-функции. Помимо предоставляемых автомобилем
возможностей, у него имеется также множество атрибутов, таких, как цвет,
число дверей, количество бензина в баке, текущая скорость и суммарный пробег
(т.е. показания счетчика-одометра). Как и возможности автомобиля, его
атрибуты представлены в проекте и чертежах. Когда вы ведете автомобиль, они все
время с ним ассоциируются. У каждого автомобиля имеются свои собственные
атрибуты. Например, каждый автомобиль знает о том, сколько бензина у него
в баке, но не о том, сколько бензина в баках других автомобилей.
Аналогичным образом объект имеет атрибуты, которые, в процессе использования его
в программе, всегда сопровождают объект. Спецификация этих атрибутов
является частью класса объекта. Например, объект банковского счета имеет
атрибут баланса, представляющий сумму денег на счете. Каждый объект
банковского счета знает баланс счета, им представляемого, но не балансы других
счетов банка. Атрибуты специфицируются элементами данных класса.


P.S. Если читаете на английском, то можно 9-е издание книги купить (у нас только 5-е переведено пока что).

Цены, правда, у них, прямо скажем, конские - $127.17 за бумажную версию и $65.15 за электронную.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru