Уроки C++ с нуля / Урок #18 - (Введение в ООП) Классы и объекты

  Рет қаралды 175,652

Гоша Дударь

Гоша Дударь

Күн бұрын

ООП в языке C++ является его отличительной чертой от языка Си. В этом уроке мы изучим классы и объекты в языке C++, а также научимся взаимодействовать с полями (переменными) благодаря методам и функциям (аксессоры).
✔ Основной сайт: itproger.com/
✔ -------------
Вступай в группу Вк - prog_life
Группа FaceBook - goo.gl/XW0aaP
Instagram: / gosha_dudar
Telegram: t.me/itProger_o...
Страничка Twitter - / goshadudar
- Уроки от #GoshaDudar 👨🏼‍💻
- Все уроки по хештегу #GoshaCpp

Пікірлер: 146
@monolag4319
@monolag4319 8 жыл бұрын
"И копировали бы весь код для новой вкладки. То есть это х... Это плохо! "
@alexbohak4628
@alexbohak4628 7 жыл бұрын
проорал на этом моменте
@СерМаз
@СерМаз 7 жыл бұрын
пеесматривал еще раз на этом моменте)
@leowarrero3174
@leowarrero3174 6 жыл бұрын
2:05
@NFOR
@NFOR 6 жыл бұрын
так можно было бы создать бесконечный цикл while
@ВладимирЛатыпов-и7г
@ВладимирЛатыпов-и7г 6 жыл бұрын
И копировали бы весь код для новой вкладки. Но это же полный бред!!! У нас просто была бы функция, создающая новую вкладку
@РусланАхмадуллов-м2э
@РусланАхмадуллов-м2э 6 жыл бұрын
Можно сделать еще интереснее, чтобы не в коде прописывать 3 параметра для объекта, а в консоли. Т.е создать функцию чтобы записывать данные в переменные: void input() { cin >> year; cin >> month; cin >> day; } А внизу вместо shkoda.set(параметры); прописать shkoda.input();
@ifomich
@ifomich 7 жыл бұрын
Давным давно, помнится, я брал игры от телефонов, декомпилировал их, переводил на русский и собирал обратно в .jar файл. Языка java я не знал и мне всё было интересно, чёйта там за классы в каждом файле. И вот спустя 13 лет я таки понял, что это за классы такие)) Но автор молодца! Объясняет так, что даже я понимаю))
@sipspice
@sipspice 7 жыл бұрын
Сергей Фомичев Жиза
@davidkroods811
@davidkroods811 6 жыл бұрын
какой декампилятор ты использовал ?
@darkmatter9520
@darkmatter9520 5 жыл бұрын
Хах я тоже с похожего начинал декомпилировал плагины для серверов Minecraft и русифицировал
@НикитаАндреевич-щ6г
@НикитаАндреевич-щ6г 6 жыл бұрын
Спасибо тебе, Гоша. Очень полезные и продуктивные уроки. Осваивается язык с твоей помощью очень легко
@ЗИБРАПАЛАСАТАЯ
@ЗИБРАПАЛАСАТАЯ 7 жыл бұрын
02:10 чуть не матюкнулся))
@koteich_live
@koteich_live 4 жыл бұрын
+++
@Patallogus666
@Patallogus666 7 жыл бұрын
Обалденные уроки и шикарная подача! От остальных авторов я засыпал реально)))))))))
@NoName-xh9nb
@NoName-xh9nb 8 жыл бұрын
Здравствуй а когда ты будешь говорить про создание GUI и будешь ли вообще про него говорить? Спасибо!
@dmitryefimkin6550
@dmitryefimkin6550 9 ай бұрын
Спасибо. Понятное и интересное объяснение.
@vooslich
@vooslich 2 жыл бұрын
" 1:50 -- то мы бы просто копировали весь код ради одной вкладки. Это х... это плохо.."
@АлинаПетрова-н6я
@АлинаПетрова-н6я 2 жыл бұрын
Это гениально!Спасибо вам)
@Gamingbeluga34
@Gamingbeluga34 2 жыл бұрын
У автора 100% Шкода :)
@СергейАлександров-б1м
@СергейАлександров-б1м 3 жыл бұрын
👍👍👍💪👏👏👏 Спасибо! Создал свой клас с использованием Кирилицы .
@elyutin5283
@elyutin5283 7 жыл бұрын
Поправьте если что-то не так,но разве public,private,protected это не спецификаторы доступа?
@dangan9932
@dangan9932 7 жыл бұрын
Это ху, это плохо)))
@oldzhas777
@oldzhas777 4 жыл бұрын
Скажи пожалуйста, а что за компилятор это у тебя?
@barrera6669
@barrera6669 4 жыл бұрын
Только что глянул, помог с темой) В вузе не мог выучить нифига, завтра экз. Луцек ставлю)
@MemsFN
@MemsFN Жыл бұрын
2:08 хотел сказать, что - то, но передумал😉
@StoryOff
@StoryOff 7 жыл бұрын
Такое получилось. Сначала просто так сделал, потом захотелось со вводом. Но со вводом как-то громоздко если в мейне его делать, поэтому перенес его в функцию класса. class House { private: int floor_amount, age, room_amount; string name; public: void set(string name_house, int floor_house, int room_house, int age_house) { cout name_house; cout floor_house; cout room_house; cout age_house; name = name_house; floor_amount = floor_house; room_amount = room_house; age = age_house; } void get() { cout
@mbpddd
@mbpddd Жыл бұрын
Как выделять и сразу коментировать на вижуал студио
@piha1298
@piha1298 5 жыл бұрын
Ну когда же шкода будет записываться правильно: "Skoda" без h =D
@flexoalex4168
@flexoalex4168 4 жыл бұрын
И через Š
@perpetualgod5038
@perpetualgod5038 6 жыл бұрын
Понимаю, что не очень актуальная, но немного полезная информация для автора: "is" и "-" - одно и то же. Например, "месяц - 11" переводится как "(the) month is 11"
@СергейКабанов-ж4р
@СергейКабанов-ж4р 4 жыл бұрын
Спасибо!
@dashapro8628
@dashapro8628 2 жыл бұрын
Прикольно, что я смотрю это видео 23 ноября)))
@НастяПупс-ж4е
@НастяПупс-ж4е 6 жыл бұрын
Помогите, пожалуйста!!! Я написала класс,как вы и говорили и показывали, но подчеркивает cin, cout и пишет "cin does not name a type" так же и для cout .
@eyyubmuradov9308
@eyyubmuradov9308 4 жыл бұрын
пропиши using namespace std; в начале программы еще до всех функций и классов....
@Danoherqoyan
@Danoherqoyan 6 жыл бұрын
Спасибо большое за твои старания... #include using namespace std; class Home{ private: int floor, room, price; public: void set(int hm_floor, int hm_room, int hm_price){ floor = hm_floor; room = hm_room; price = hm_price; } void get() { cout
@silvanya2444
@silvanya2444 6 жыл бұрын
А если я захочу поменять параметр shkoda, например год, как это сделать?
@pokayfu2343
@pokayfu2343 5 жыл бұрын
хорошее видео , молодец.
@tree-service
@tree-service 7 жыл бұрын
как правильно вынести данный класс "авто" в другой файл и подключить его к этому проекту?
@lianbice7422
@lianbice7422 4 жыл бұрын
удобненько и воды немного спасибо
@takatai6668
@takatai6668 5 жыл бұрын
Гоша, посоветуй. Как лучше запомнить ООП. Я вроде понял. Но запомнить, трудновато.
@ДарьяМ-т3л
@ДарьяМ-т3л 5 жыл бұрын
Очень хороший урок, объясняешь просто отлично, спасибо большое. Подскажи, пожалуйста, только как называется программа(компилятор), который показан на видео
@akashino376
@akashino376 5 жыл бұрын
даша ириньева , на mac -Xcode на Windows - visual studio или code block(на крайняк)
@roflanebalo4456
@roflanebalo4456 6 жыл бұрын
2:09 копировать весь код это ху...плохо для программы)
@don1234569
@don1234569 6 жыл бұрын
будут ли уроки по c++ || c# для профф?
@NFOR
@NFOR 6 жыл бұрын
а почему бы не получать доступ через наследование . class a :: public auto
@face863
@face863 4 жыл бұрын
А зачем создавать 2 функции в классе,если можно было этот cout написать в функции set?
@ХаваГазиева-и5й
@ХаваГазиева-и5й 5 жыл бұрын
Хорошо комментируешь (2:09 - Это х..... Это плохо...)
@lemurcatta4249
@lemurcatta4249 7 жыл бұрын
Вот мое скромное Д/З )) Хотел создать несколько классов с разными значениями, но после, ничего не хочет работать (не найдена точка входа). Я так понял, что залез дальше, за рамки этого урока. Ну а так, вот: #include using namespace std; class Auto { private: int Количество__ядер, RAM_, Емкость__аккумулятора; float Частота__CPU; public: void message() { setlocale(LC_CTYPE, "rus"); cout
@user-nj5pp7ug8g
@user-nj5pp7ug8g 5 жыл бұрын
Исправил твои ошибки. Вот рабочий код: #include using namespace std; class Auto { private: int Количество__ядер, RAM_, Емкость__аккумулятора; float Частота__CPU; public: void message() { setlocale(LC_CTYPE, "rus"); cout
@GoodChoiseBitch
@GoodChoiseBitch 7 жыл бұрын
а как сделать так, чтобы вместо "...of this auto... "выводилось "of bmw... или ...of schoda..."и т.д. на основе функции, чтобы не прописывать cout для каждой машины?
@Arifnasirov
@Arifnasirov 7 жыл бұрын
интересно если бы можно было не вписывать самому каждый раз имя объекта (shkoda) например в Python было: print("хххх {0} ххх".format(a)) то-есть вместо "а" вписывалось его значение. Есть ли альтернатива этому в C++ ?????
@АртёмСысолов
@АртёмСысолов 7 жыл бұрын
char* Name
@universegames7692
@universegames7692 4 жыл бұрын
Ты просто создаёшь ещё одну переменную как название машины и выводишь ее. Ты долго ждал меня и я пришёл
@maxvulf885
@maxvulf885 2 жыл бұрын
@@universegames7692 можно пример пожалуйста
@universegames7692
@universegames7692 2 жыл бұрын
@@maxvulf885 Ты слишком поздно пришёл. Я уже забыл этот язык. Программирование оказалось для меня бесполезным.
@maxvulf885
@maxvulf885 2 жыл бұрын
а если я еще хочу что бы у меня писался цвет типо "orange",как это сделать?
@stickmanlegends2418
@stickmanlegends2418 7 ай бұрын
Ввел вроде бы все правильно,но на консоли выводит только class is working. Кто нибудь сталкивался с таким?
@ГлібМаліков
@ГлібМаліков 7 жыл бұрын
#include "stdafx.h" #include #include using namespace std; class phone { private: int year, size, yadra;public: void message() { cout
@timohavol8032
@timohavol8032 6 жыл бұрын
Молодец, неплохо, но... (знаю что уже почти год прошёл, скорее всего уже хорошо шаришь, но для остальных интересующихся напишу) Плохо что ты используешь разные отдельные функции get и set для каждого бренда телефона. Таким образом ты не совсем верно использовал главную фишку ООП, показанную автором в этом видео --> суть в том, что имея одну функцию, можно забивать совершенно разные значения под каждый из экземпляров класса. (Знаю что юзал скорее для текста cout, но так, думаю, не стоит делать)
@nikolayprudov170
@nikolayprudov170 2 жыл бұрын
​@@timohavol8032 Молодец, неплохо, но... (знаю что уже почти год прошёл, скорее всего уже научился гуглить, но для остальных интересующихся напишу) Плохо что ты используешь слово yadra ведь ты знаешь слова year и size. Таким образом это выглядит максимльно нелепо. (думаю, не стоит так делать)
@ИванСтасюк-с8х
@ИванСтасюк-с8х 7 жыл бұрын
Почему первая програма не работает VS2017?
@oksid9133
@oksid9133 7 жыл бұрын
ООП и 2я машина появилась!)
@Slavasil
@Slavasil 6 жыл бұрын
хахахах
@ori-d
@ori-d 5 жыл бұрын
В чем отличие структуры от класса (естественно в с++)?
@milkyshake5902
@milkyshake5902 3 жыл бұрын
Как минимум в том,что ты можешь прописывать функции внутри класса(в отличие от структуры),применять наследование
@princessmary5556
@princessmary5556 Жыл бұрын
@@milkyshake5902 Бред.
@princessmary5556
@princessmary5556 Жыл бұрын
В с++ вообще нет никаких структур. Пусть название ключевого слова struct не вводит вас в заблуждение. На самом деле оно описывает класс, а не структуру. При использовании ключевого слова struct, модификатор доступа к членам и наследование по умолчанию являются публичными, в то время как при использовании ключевого слова class, модификаторы доступа и наследования являются приватными.
@kagatooo
@kagatooo 6 жыл бұрын
#include #include using namespace std; class houses { private: int windows ; bool pool; float square; string name; public: void message() { cout
@justnikita2830
@justnikita2830 2 жыл бұрын
Получилось круто, можно еще вместо if(pool == 1) **код** else **код** , сделать так: **Код** if(pool == 1) cout
@ДмитрийРоманчук-ч4т
@ДмитрийРоманчук-ч4т 7 жыл бұрын
а есть ли в С++ Getter и Setter?
@Grintekk
@Grintekk 7 жыл бұрын
нет
@mr.drakkid6936
@mr.drakkid6936 6 жыл бұрын
А про protected: забыл, печально...
@i3doctor474
@i3doctor474 6 жыл бұрын
Странно у меня почему то ошибку выводит!
@АртемАртемьев-з4к
@АртемАртемьев-з4к 5 жыл бұрын
Кто-нибудь может сказать в чем отличие структуры от классов??
@АвтосервисГАрАж
@АвтосервисГАрАж 4 жыл бұрын
#include #include #include #include #include using namespace std; class Tree { private: int number, number_List; public: void message() { cout
@sambadi_8957
@sambadi_8957 4 жыл бұрын
Моё ДЗ: #include #include using namespace std; void menu(); class Game { private: int date[3], price, PEGI; public: char name[20]; void set() { cout > name; cout > date[0]; cout > date[1]; cout > date[2]; cout > price; cout > PEGI; } void get() { cout
@mironstav2-223
@mironstav2-223 Жыл бұрын
Спс мне как раз нужен был чей то код где я смогу разобратся
@sambadi_8957
@sambadi_8957 Жыл бұрын
@@mironstav2-223 жесть ты древность откопал
@ЛесяФОРОЩА
@ЛесяФОРОЩА 4 жыл бұрын
#include #include using namespace std; class Dom { private: int wide, length, age; string type; public: void set(int _wide, int _length, int _age, string _type) { wide = _wide; length = _length; age = _age; type = _type; } float perimetr(int wide, int length) { return wide + length; } float square(int wide, int length) { return wide * length; } float price(int age) { float res = square(wide, length) / perimetr(wide, length)*pow(age, 2); return res; } void info() { cout
@vladyslavserdiuk2893
@vladyslavserdiuk2893 4 жыл бұрын
"это х, это плохо" ©
@horhegarsia4221
@horhegarsia4221 Жыл бұрын
шкода правильно пишется без h: skoda
@_____2525
@_____2525 2 жыл бұрын
2:07 мат хотел сказать
@yura_belyavtsev
@yura_belyavtsev 6 жыл бұрын
Можно не создавать метод get, а его содержимое просто написать в set.
@piterripetev9652
@piterripetev9652 7 жыл бұрын
в начале было все понятно но потом начал совмещать публичный и закрытый клас мозги взорвались
@ЕкатеринаТемникова-и1д
@ЕкатеринаТемникова-и1д 6 жыл бұрын
красИвее ):
@agelast222
@agelast222 6 жыл бұрын
Функции используют классы? Что дальше, ноги используют человека? Может наоборот?
@ГерычВаркрафт
@ГерычВаркрафт 7 жыл бұрын
а как слово вывести то ?
@ГерычВаркрафт
@ГерычВаркрафт 7 жыл бұрын
Никита Абраменко ,а имею ввиду как с клавиатуры ввести...
@universegames7692
@universegames7692 4 жыл бұрын
2:09
@GoStrong
@GoStrong 3 жыл бұрын
@@AlexanderSemenko это ху... это плохо
@princessmary5556
@princessmary5556 Жыл бұрын
@@AlexanderSemenko Нет, не весь. Зачем вы балаболите о том, в чем не разбираетесь?
@andreyua2
@andreyua2 7 жыл бұрын
А че за IDE кстати?
@Даня-д7я1в
@Даня-д7я1в 6 жыл бұрын
XCode
@ikirutavi
@ikirutavi 6 жыл бұрын
Объясните, пожалуйста, как выводить строки с помощью классов, а не только тип int
@РусланАхмадуллов-м2э
@РусланАхмадуллов-м2э 6 жыл бұрын
#include string название; cin >> название; cout
@ikirutavi
@ikirutavi 6 жыл бұрын
Ты вообще мой вопрос видел?
@АндрейГридлик
@АндрейГридлик 2 жыл бұрын
Что такое класс? Что такое объект?
@princessmary5556
@princessmary5556 Жыл бұрын
Объект - область памяти. Класс - тип данных. Определяет содержимое объекта, а так же методы для его обработки.
@АндрейГридлик
@АндрейГридлик Жыл бұрын
@@princessmary5556 В такой формулировке я не вижу разницы с Цэ без плюсплюс. Всё данные и там находятся в какой-то области памяти. Со всеми данными так или иначе и там работают. Ещё раз, я ничего при этом не "пытаюсь"! Я просто не понимаю, зачем слово функции заменили на слово методы, зачем набор данных заменили на слово класс? А в итоге не могу думать в формате С++. Более того, я в своё время занимался и преподавательской деятельностью и из этой работы я вынес стойкое убеждение, что прежде, чем ученику что-то объяснять, нужно выяснить, что у него в голове сложилось не так. Другими словами: "Ты думаешь и уверен в том, что видишь на небе звезды со всей Вселенной, а это не так. Ты видишь звёзды только находящиеся в нашей галактике. Да и то, только небольшую часть из 300 миллиардов оных." Вот как-то так. Кстати, примерно так же я в своё время объяснял понятные мне вещи, но непонятные однокурсникам.
@bonjovi8610
@bonjovi8610 7 жыл бұрын
одно не понятно, для чего нужны классы и структуры
@ГлібМаліков
@ГлібМаліков 7 жыл бұрын
в классы ты можешь добавлять методы и функции
@eukalyptusbonb0n
@eukalyptusbonb0n 3 жыл бұрын
Я придумал термин «объектно-ориентированный», и я уверяю вас, что не имел в виду C++ ©Алан Кей
@princessmary5556
@princessmary5556 Жыл бұрын
Начиная с 1984, Кэй был ведущим исследователем (Apple Fellow) в Apple до закрытия группы перспективных технологий (ATG), одного из отделов исследований и разработок. Тогда он присоединился к Walt Disney Imagineering в качестве главного исследователя (Disney Fellow) и оставался там до тех пор, пока Дисней не закрыл свою программу Disney Fellow. Позже Кэй работал в команде Applied Minds, затем стал главным сотрудником (Senior Fellow) в Hewlett-Packard, пока HP не распустил команду перспективных исследований в области программного обеспечения 20 июля 2005 года. Теперь понятно, почему Smalltalk не взлетел.
@flexoalex4168
@flexoalex4168 4 жыл бұрын
Не много не правильно объяснил суть функции set. Попробуй вызвать таким образом, shkoda.set(-32, 35, 'W'); и посмотри что выведется на экран. Чтобы такого не произошло в функции set ВСЕГДА производиться проверка на корректность принимаемых данных. Так как класс закрытый ящик, то ошибочные данные могут убить всю программу.
@ryne3778
@ryne3778 3 жыл бұрын
Одноклассники в деле
@serveladik
@serveladik 7 жыл бұрын
А ЗАЧЕМ тогда в прайват пихать данные, если их потом изменять через паблик
@Grintekk
@Grintekk 7 жыл бұрын
Это принцип инкапсуляции, почитай в инете на эту тему. Там более подробно описано, чем я смогу тебе обьяснить.
@serveladik
@serveladik 7 жыл бұрын
Константин Галицкий я знаю примерно что это
@turboboy8049
@turboboy8049 7 жыл бұрын
►Без привата выходит короче. Разумеется, Гоша просто показывает, что так можно, но если оптимизировать именно этот код, то будет так: #include using namespace std; class Auto { public: int year, month, day; void message() { cout
@irena4459
@irena4459 5 жыл бұрын
0
@NonenHP
@NonenHP 7 жыл бұрын
Правильно пишется Škoda
@Андрій-ь4ц6ч
@Андрій-ь4ц6ч 6 жыл бұрын
Моё дз) Знаю поздно но что поделать) Если здесь кто-то ещё есть подскажите как улучшить мой этот мини код, может его можно уменьшить?)) #include using namespace std; class Auto { private: int year, month, day; public: void message () { cout
@БогданШилов-ж3ч
@БогданШилов-ж3ч 6 жыл бұрын
В функцию get помести ещо один параметр - название автомобиля.И при вивода на екран виводи не разние функции а одну но с разними значениями етой переменной.Тоесть с разним названием P.S.Извините за руский.Я украинец русский знаю плохо а пишу на нем чмсто из уважения к собеседнику.На момент написания коментария 13 лет.
@Андрій-ь4ц6ч
@Андрій-ь4ц6ч 6 жыл бұрын
Богдан Шилов, спасибо за ответ
@mbpddd
@mbpddd Жыл бұрын
Привет спустя 5 лет , ты уже стал програмистом ?🙂🙂🙂
@Андрій-ь4ц6ч
@Андрій-ь4ц6ч Жыл бұрын
@@mbpdddнет
@mbpddd
@mbpddd Жыл бұрын
@@Андрій-ь4ц6ч печально
@vasilyyy989
@vasilyyy989 5 жыл бұрын
Паблык. Так раздражает.
@StasEnso
@StasEnso 6 жыл бұрын
Парень, похоже, сам не понимает сути ООП, если описывая ООП, он по сути описывал преимущества процедурного программирования. В ООП главная мысль совсем в другом. Идеальный ООП код не содержит глобальных переменных, а все объекты не спутаны между собой нитями взаимосвязей. Любой объект можно заменить и не придётся переписывать под эту замену половину кода как в процедурном программировании.
@digitalgame3645
@digitalgame3645 5 жыл бұрын
Можете скинуть нормальный курс или видео обучение?
@ОлегФурзиков-ж1х
@ОлегФурзиков-ж1х 2 жыл бұрын
Действительно, вообще не понимает, великолепная и большая тема про ООП, а у него просто бред.
@jonik_doit4463
@jonik_doit4463 7 жыл бұрын
Классы свободно можно помещать функции, такие классы называются локальные...даже в замыканиях лямбд их можно определять...прежде чем болтать чухню на видео лучше бы матч-часть разбирал
@ДмитрийВсемогущий-я2и
@ДмитрийВсемогущий-я2и 6 ай бұрын
ничё так и не понял. Куча граблей для того чтобы воспользоваться одной функцией которую и так можно было написать.
My daughter is creative when it comes to eating food #funny #comedy #cute #baby#smart girl
00:17
小丑在游泳池做什么#short #angel #clown
00:13
Super Beauty team
Рет қаралды 43 МЛН
ОБЪЕКТЫ И КЛАССЫ В ПИТОНЕ
17:47
Андрей Иванов | Python
Рет қаралды 5 М.
Что пишут на языке программирования C++?
16:27
Собеседование Junior C++
45:32
Ambushed Raccoon
Рет қаралды 115 М.
My daughter is creative when it comes to eating food #funny #comedy #cute #baby#smart girl
00:17