Класс в программировании — разновидность абстрактного типа данных в объектно-ориентированном программировании (ООП), характеризуемый способом своего построения. Другие абстрактные типы данных — метаклассы, интерфейсы, структуры, перечисления, — характеризуются какими-то своими, другими особенностями. Наряду с понятием «объекта» класс является ключевым понятием в ООП (хотя существуют и бесклассовые объектно-ориентированные языки, например, Self, Lua; подробнее смотрите Прототипное программирование). Суть отличия классов от других абстрактных типов данных состоит в том, что при задании типа данных класс определяет одновременно и интерфейс, и реализацию для всех своих экземпляров, а вызов метода-конструктора обязателен. На практике объектно-ориентированное программирование сводится к созданию некоторого количества классов, включая интерфейс и реализацию, и последующему их использованию. Графическое представление некоторого количества классов и связей между ними называется диаграммой классов. Объектно-ориентированный подход за время своего развития накопил множество рекомендаций (паттернов) по созданию классов и иерархий классов. Класс в языке C++ создаётся следующим образом:
class MyClass: public ParentClass // ParentClass — класс-предок, если таковой имеется
{
public: // элементы в этой секции доступны из любой части программы
MyClass(); // конструктор
~MyClass(); // деструктор
protected: // элементы в этой секции доступны из класса и его потомков
private: // элементы в этой секции доступны только из класса; это область доступа по умолчанию
};
После своего создания класс считается полноценным типом данных и, следовательно экземпляры класса создаются следующим образом:
MyClass myinstance;
Обращение к членам класса:
myinstance.classmember
Уничтожается экземпляр класса, как и любая переменная, только в случае, если функция, в которой он был создан, заве
мне больше понравилось когда это назвали инкапсуляцией, сразу стала понятнее сама идея, только плюсы от таких структур кроме удобства в больших проектах для персонала я пока не понял, по привычке пишу без них, мне бы наглядный пример маш кода как класс строится и из чего состоит, в отладчике я так и не понял
#include
#include
#include
class String
{
public:
String(char const* const p_ = "")
{
p = new char[strlen(p_) + 1];
strcpy(p, p_);
}
String(String const& s)
{
p = new char[strlen(s.p) + 1];
strcpy(p, s.p);
}
String& operator=(String s)
{
Swap(*this, s);
return *this;
}
virtual ~String()
{
delete[] p;
p = 0;
}
friend std::ostream& operator<<(std::ostream& ost, String const& s)
{
return ost << s.p;
}
protected:
char* p;
void Swap(String& lhs, String& rhs)
{
std::swap(lhs.p, rhs.p);
}
};
class DString : public String
{
public:
explicit DString(char const* const p_ = "", char const* const p1_ = "") : String(p_)
{
p1 = new char[strlen(p1_) + 1];
strcpy(p1, p1_);
}
DString(DString const& ds) : String(ds)
{
p1 = new char[strlen(ds.p1) + 1];
strcpy(p1, ds.p1);
}
DString& operator=(DString ds)
{
Swap(*this, ds);
return *this;
}
~DString()
{
delete[] p1;
p1 = 0;
}
friend std::ostream& operator<<(std::ostream& ost, DString const& s)
{
return ost << s.p << '\n' << s.p1;
}
protected:
char* p1;
void Swap(DString& lhs, DString& rhs)
{
String::Swap(lhs, rhs);
std::swap(lhs.p1, rhs.p1);
}
};
int main()
{
DString ds("aa", "bb");
String s = ds;
std::cout << s << std::endl;
return 0;
}
сильно похоже на механизм библиотек, только встроенный в сам компилятор, я до сих пор обхожусь только функциями
Я спать, мозги больше не варя,т диссертация сожрала всё за ночь, сорь помог бы, но больше не могу((((
я тоже сутки не спал, отладчик мучал
Классы и объекты в С++ являются основными концепциями объектно-ориентированного программирования. Объектно-ориентированное программирование — расширение структурного программирования, в котором основными концепциями являются понятия классов и объектов. Основное отличие языка программирования С++ от С состоит в том, что в С нет классов, а следовательно язык С не поддерживает ООП, в отличие от С++. И где здесь математика???
Классы и объекты в С++ являются основными концепциями объектно-ориентированного программирования — ООП. Объектно-ориентированное программирование — расширение структурного программирования, в котором основными концепциями являются понятия классов и объектов. Основное отличие языка программирования С++ от С состоит в том, что в С нет классов, а следовательно язык С не поддерживает ООП, в отличие от С++.
Классы и объекты в С++ являются основными концепциями объектно-ориентированного программирования. Объектно-ориентированное программирование — расширение структурного программирования, в котором основными концепциями являются понятия классов и объектов. Основное отличие языка программирования С++ от С состоит в том, что в С нет классов, а следовательно язык С не поддерживает ООП, в отличие от С++.
там само слово концепция уже высш мат, причем довольно мутный
В любом высокоуровневом языке программирования "класс" это некий шаблон предназначенный для многороазового использования.
мне уже рассказали, это инкапсуляция, к шаблонам отношения не имеет
Тих,.., Тих..., Тихо!!! Инкапсуляция это - сокрытие, т.е. Вы используете некий шаблон для решения некоей задачи не вдаваясь в подробности решения самой задачи. Т.е. берете шаблон, задаете ему параметры и на выходе получаете результат.
который сам по себе всего лишь пакет с данными и функциями имеющий заголовок и механизмы по репликации, инкапсуляция это структуирование, объединение, сокрытия я там не нашел, разве что фокус переменных меняется и автоматизация по использованию памяти идет в нагрузку
приблизительно тоже, что и класс в других языках программирования... возможность создавать объекты, со своими параметрами
Объект с предопределенными свойствами, процедурами создания, уничтожения, набором функций и процедур с ними связанных
надо тогда в гугле посмотреть, что да как, а то плата на которой светодиоды в куб собраны неясно по схеме каков принцип работы
Посмотрите. Насколько помню их его рассказов там довольно просто логика программировалась, чуть ли не интерпритатор команд был, не нужно было сильно программировать
я пока вспоминаю как прямую выводить на маш коде, давно не писал уже, как вывести прямую на матрице, я вроде через синус делал давно, сейчас что то не выходит
Возьмите готовые библиотеки, там все уже оптимизировано. Конечно можно самому, но это время и не факт, что оптимальнее будет. Как минимум придется оптимизировать код для вертикальных, горизонтальных, наклонных. Если все-таки писать будете, то лучше не через синус, это вычисляемое значения с плавающей точкой, т.е. медленно. Лучше расчитать на старте массив значений от разрешения экрана и использовать как коэффициенты в уроавнении прямой y=ax+b
тоже подумывал не через синус, а коэффициентами, но синусы можно посчитать в таблицу, а потом просто из нее вызывать значения
то же что и в остальных объектно-ориентированных языках программирования. учите матчасть.
даже на турбо-паскале есть классы и объекты.
в бауманке у нас да, обектам учат. но не на всех спецальностях
турбо паскалем когда то занимался, пока он не помер, классами то я пользуюсь, только не могу спроектировать именно для пользы себе, мне теория нужна, сам смысл делать структуры микроопераций именно в такой форме
да вы эстет
Интересно конечно. Вообще в логическом программировании особого смысла в классах нет. тем более если Вы всякие там драйвера пишете. Это для графических приложений больше нужно, для обработки массивов данных может пригодиться. А вы уверены что Вам нужно использовать классы если у Вас всё на микроуровне, на ассемблере.
мне когда началась необходимость интерфейсы делать, сразу стало понятно что придется зубрить апи, а где апи там и классы, после драйверов кажется слишком странным такой стиль и автоматизация, особенно как объекты начинают есть память и стек дергать, классы все же теперь заставляют учить, все мосты ОС построены на ООП модели, я например рутинные вещи в VBA делаю, пусть он и тормозной, но у него нет прямых доступов к ресурсам, вот сейчас и читаю как к экзели приделать модуля для более низкого уровня
уф. ну удачи Вам в этом деле. не лёгкая работа.
не си а DC++ это язык на чём написана программа крупнейшей файлообменной системой хабов
примерно тем же занимаюсь, только это микрофон и фотодиоды и датчик движения, построено на ардуино, а чпу по большому счету это драйвер принтера плюс 3я ось, я ооп там вообще не пользуюсь, отлаживать по незнанию тяжело, все упирается на написание конвертера например для 3д студии, просто по прикладным библиотекам мало информации, приходится придумывать велосипеды
тяжёлый случай ,ЧПУ токарный станок из драйвера от принтера через ардуино и через 3д студию ещё ты хочешь загружать туда, как всё это связать не представляю . есть такой вариант если загружать картинку в принтер где цветовая палитра будет означать глубину врезки резца например белый это ось патрона, чёрный это максимально назад резец отведён, и каждая строка печати принтера это один проход резца с лева на право и снова в лево .но как перевести операции в оттенки изображения хз
в оттенки проще всего, там большая свобода выбора, я на роботе с датчиком движения давно отработал управление моторами, просто чтобы увязать все воедино надо все сдк в одну собрать, а классами я почти не пользовался никогда, у меня вместо удобства чтения получается черти что разберешь, а под 3д студию плагин скоро доделаю, там оказалось проще чем можно подумать
в ютуб выложишь потом если получится ?
смысла не вижу, там 3д принтеров полно
ну это такое название для объектов чтоб удобнее программировать было)
объект не однозначно переводится в код, мне и интересно почему майкрософтский "рендер" более тормозной чем например intel или wacom
все зависит от того как грамотно создали продукт.
по системному программированию с литературой беда, все через отладчик приходится делать, а это время
да без отладчика никуда.
по библиотекам мало информации, так что чужие наработки просто так не возьмешь себе, все приходится делать заново
Почему именно в С++? Это вроде как кроссплатформенное понятие ООП?
Ой, я так плохо выгляжу? На пхп никак не потяну?:))))
препроцессор штука интересная, но больше скриптами люблю страницы генерировать
Я с вебками вообще никак 
Стороннее ПО на питоне, есть вариант вставить свои заморочки на ПХП
я в линях мало чего понимаю, по ним литературы нет нормальной, как только начинаешь копаться в поднаготной, сразу ничего найти не удается
основные концепции объектно-ориентированного программирования
мне надо компилятор написать с классами, а я в упор не пойму что это такое и как их реализовать
ничем не могу помочь я в принципе частично теоретик
Международная система единиц измерения физических величин..
здесь про язык программирования
А вы что не знаете? Вот уморил, это же всем известно.
мне с точки зрения генерации машинного кода это интересно, как абстракцию переводят в микрооперации
не такая уж это и абстракция. Есть два пути. Компилятор и интерпретатор.
еще JIT есть, мне просто интересно как делать ассемблерные вставки в класс, само оптимизирующийся код, когда одна часть генерирует вторую часть и наблюдает за собой в памяти
JIT это вариант компиляции. Динамический. Но вы молодец.
я так понял классы из ооп ввели в си для удобства навигации по функциям, такой как бы интерфейс между базами данных и машинным кодом, только некоторые приемы до конца мне не ясны, например как эти структуры уходят в стек и как генерируют класс в машинный код, вообще как ими пользоваться, потому что мне и одними функциями пользоваться вполне устраивает
Не могу помочь, я не программист, знакома немного, так как сдавала сертификации разные по работе.
я пока библиотеку для VisualBasic for Applications пишу, потому что в вижуал бейсике нету например указателей, а он мне нужен для экзели, в ней обычно все проекты расписываю и делаю в ней прототипы разные, весьма удобный способ, табличный процессор вообще не заменим для этих целей
если коротко - абстрактный тип в программировании
Разве прошёл, надо в ВУЗе поинтересоваться. Недавно сын моей подруги восстановился на исторический, давно учился, бросал 2 ли 3 раза... Но восстановился на заочное отделение сейчас. Так по новой программе надо досдать 12 экзаменов, сдаёт... решил доучиться, диплом нужен. Он уже и грузчиком на мусорке работал, и в магазине продавцом сантехники, и плитку клал тротуарную в России. В итоге - пошёл учиться дальше...
у меня примерно также и получается, тем более для диплома тем много созрело
Восстанавливайтесь, узнайте, у них архивы есть, что Вы учились... Вдруг ещё не прошли сроки...
ну до конца программу добью, может и обращусь, мне ездить далеко будет не выгодно, здесь филиал академии образования открылся, намного ближе
Так может, взять надо какую справку, что учился, вдруг предметы совпадут, что сдавали.Вдруг учтут и не надо лишнее сдавать будет... В любом случае надо узнать там, где учились. Можно и по электронке узнать же...
А как у вас такое получилось? ↯380↯ В символах?
есть такая программа charmap.exe в ней можете любой выбрать и вставить себе
Спасибо
а можете прямо из поля сразу вставить, тоже будет видно
↯↯↯ а еще что там есть интересного?
сердечки всякие, их 65535 всего, найдете что хотите
А не опасна эта программа? Если скопирую то КУДА ее мне у себя оставить?
она уже есть в комплекте с системой
Это только кодоложец сможет вам ответить...
Стракт с парой мелких отличий
мне и профессор мало что смог объяснить, то что в учебниках пишут на практике отличается в разы
у языков высокого уровня много разных механизмов генерации кода, и по ним мало внятной документации
А причем тут генерация кода? Вы хотите понять на уровне ассембли или рапсоди?
на уровне кодов, потом в отладчике мало понятно как класс представлен
встретились программисты))...
экземпляр соответствующего класса 
мне интересно как это в машинный код генерируется, я больше на ассемблере сижу
язык програмирования для начинающих
эту тайну почему то нигде не раскрывают, видимо придется в отладчике долго копаться и взломом догадываться
без плюсиков пожалуйста мне можно!
мне больше раскрашивать нравится, или коллажи делать, планшет сломался, теперь карандашом рисую и через сканер перевожу образцы
шоп чем удобен, можно через экзель программно управлять эффектами, а то некоторые вручную делать надоело
я лично всегда в ручную делала и нормально!Просто привыкнуть надо)
некоторые вещи можно только программно сделать, а мышью особо сильно не наиграешься, я раньше тоже вручную делал все, но потом надоело зря время тратить и пересел на скрипты
попробую)Ну ладно пока я спать!