Уроки C++ с нуля / Урок #18 - (Введение в ООП) Классы и объекты
Вставка
- Опубліковано 7 сер 2016
- ООП в языке C++ является его отличительной чертой от языка Си. В этом уроке мы изучим классы и объекты в языке C++, а также научимся взаимодействовать с полями (переменными) благодаря методам и функциям (аксессоры).
✔ Основной сайт: itproger.com/
✔ -------------
Вступай в группу Вк - prog_life
Группа FaceBook - goo.gl/XW0aaP
Instagram: / gosha_dudar
Telegram: t.me/itProger_official
Страничка Twitter - / goshadudar
- Уроки от #GoshaDudar 👨🏼💻
- Все уроки по хештегу #GoshaCpp
"И копировали бы весь код для новой вкладки. То есть это х... Это плохо! "
проорал на этом моменте
пеесматривал еще раз на этом моменте)
2:05
так можно было бы создать бесконечный цикл while
И копировали бы весь код для новой вкладки.
Но это же полный бред!!!
У нас просто была бы функция, создающая новую вкладку
Спасибо тебе, Гоша. Очень полезные и продуктивные уроки. Осваивается язык с твоей помощью очень легко
Можно сделать еще интереснее, чтобы не в коде прописывать 3 параметра для объекта, а в консоли.
Т.е создать функцию чтобы записывать данные в переменные:
void input() {
cin >> year;
cin >> month;
cin >> day;
}
А внизу вместо shkoda.set(параметры); прописать shkoda.input();
Давным давно, помнится, я брал игры от телефонов, декомпилировал их, переводил на русский и собирал обратно в .jar файл. Языка java я не знал и мне всё было интересно, чёйта там за классы в каждом файле. И вот спустя 13 лет я таки понял, что это за классы такие))
Но автор молодца! Объясняет так, что даже я понимаю))
Сергей Фомичев Жиза
какой декампилятор ты использовал ?
Хах я тоже с похожего начинал декомпилировал плагины для серверов Minecraft и русифицировал
02:10 чуть не матюкнулся))
+++
Это гениально!Спасибо вам)
Обалденные уроки и шикарная подача! От остальных авторов я засыпал реально)))))))))
Спасибо. Понятное и интересное объяснение.
👍👍👍💪👏👏👏 Спасибо! Создал свой клас с использованием Кирилицы .
Только что глянул, помог с темой) В вузе не мог выучить нифига, завтра экз. Луцек ставлю)
Здравствуй а когда ты будешь говорить про создание GUI и будешь ли вообще про него говорить?
Спасибо!
Спасибо!
хорошее видео , молодец.
Это ху, это плохо)))
как правильно вынести данный класс "авто" в другой файл и подключить его к этому проекту?
У автора 100% Шкода :)
удобненько и воды немного спасибо
будут ли уроки по c++ || c# для профф?
Прикольно, что я смотрю это видео 23 ноября)))
Поправьте если что-то не так,но разве public,private,protected это не спецификаторы доступа?
А если я захочу поменять параметр shkoda, например год, как это сделать?
Хорошо комментируешь (2:09 - Это х..... Это плохо...)
Гоша, посоветуй. Как лучше запомнить ООП. Я вроде понял. Но запомнить, трудновато.
Скажи пожалуйста, а что за компилятор это у тебя?
2:08 хотел сказать, что - то, но передумал😉
Ну когда же шкода будет записываться правильно: "Skoda" без h =D
И через Š
Очень хороший урок, объясняешь просто отлично, спасибо большое. Подскажи, пожалуйста, только как называется программа(компилятор), который показан на видео
даша ириньева , на mac -Xcode на Windows - visual studio или code block(на крайняк)
а почему бы не получать доступ через наследование . class a :: public auto
Почему первая програма не работает VS2017?
Понимаю, что не очень актуальная, но немного полезная информация для автора: "is" и "-" - одно и то же. Например, "месяц - 11" переводится как "(the) month is 11"
Такое получилось. Сначала просто так сделал, потом захотелось со вводом. Но со вводом как-то громоздко если в мейне его делать, поэтому перенес его в функцию класса.
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
Помогите, пожалуйста!!!
Я написала класс,как вы и говорили и показывали, но подчеркивает cin, cout и пишет "cin does not name a type" так же и для cout .
пропиши using namespace std; в начале программы еще до всех функций и классов....
" 1:50 -- то мы бы просто копировали весь код ради одной вкладки. Это х... это плохо.."
а если я еще хочу что бы у меня писался цвет типо "orange",как это сделать?
Как выделять и сразу коментировать на вижуал студио
А зачем создавать 2 функции в классе,если можно было этот cout написать в функции set?
а как сделать так, чтобы вместо "...of this auto... "выводилось "of bmw... или ...of schoda..."и т.д. на основе функции, чтобы не прописывать cout для каждой машины?
интересно если бы можно было не вписывать самому каждый раз имя объекта (shkoda)
например в Python было: print("хххх {0} ххх".format(a))
то-есть вместо "а" вписывалось его значение.
Есть ли альтернатива этому в C++ ?????
char* Name
Ты просто создаёшь ещё одну переменную как название машины и выводишь ее. Ты долго ждал меня и я пришёл
@@universegames7692 можно пример пожалуйста
@@maxvulf885 Ты слишком поздно пришёл. Я уже забыл этот язык. Программирование оказалось для меня бесполезным.
2:09 копировать весь код это ху...плохо для программы)
Спасибо большое за твои старания...
#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
Кто-нибудь может сказать в чем отличие структуры от классов??
ООП и 2я машина появилась!)
хахахах
а есть ли в С++ Getter и Setter?
нет
Странно у меня почему то ошибку выводит!
Ввел вроде бы все правильно,но на консоли выводит только class is working. Кто нибудь сталкивался с таким?
"это х, это плохо" ©
Вот мое скромное Д/З ))
Хотел создать несколько классов с разными значениями, но после, ничего не хочет работать (не найдена точка входа). Я так понял, что залез дальше, за рамки этого урока.
Ну а так, вот:
#include
using namespace std;
class Auto {
private:
int Количество__ядер, RAM_, Емкость__аккумулятора;
float Частота__CPU;
public:
void message() {
setlocale(LC_CTYPE, "rus");
cout
Исправил твои ошибки.
Вот рабочий код:
#include
using namespace std;
class Auto {
private:
int Количество__ядер, RAM_, Емкость__аккумулятора;
float Частота__CPU;
public:
void message() {
setlocale(LC_CTYPE, "rus");
cout
В чем отличие структуры от класса (естественно в с++)?
Как минимум в том,что ты можешь прописывать функции внутри класса(в отличие от структуры),применять наследование
@@milkyshake5902 Бред.
В с++ вообще нет никаких структур. Пусть название ключевого слова struct не вводит вас в заблуждение. На самом деле оно описывает класс, а не структуру. При использовании ключевого слова struct, модификатор доступа к членам и наследование по умолчанию являются публичными, в то время как при использовании ключевого слова class, модификаторы доступа и наследования являются приватными.
в начале было все понятно но потом начал совмещать публичный и закрытый клас мозги взорвались
А про protected: забыл, печально...
А че за IDE кстати?
XCode
красИвее ):
а как слово вывести то ?
Никита Абраменко ,а имею ввиду как с клавиатуры ввести...
#include "stdafx.h"
#include
#include
using namespace std;
class phone {
private:
int year, size, yadra;public:
void message() {
cout
Молодец, неплохо, но... (знаю что уже почти год прошёл, скорее всего уже хорошо шаришь, но для остальных интересующихся напишу) Плохо что ты используешь разные отдельные функции get и set для каждого бренда телефона. Таким образом ты не совсем верно использовал главную фишку ООП, показанную автором в этом видео --> суть в том, что имея одну функцию, можно забивать совершенно разные значения под каждый из экземпляров класса. (Знаю что юзал скорее для текста cout, но так, думаю, не стоит делать)
@@timohavol8032 Молодец, неплохо, но... (знаю что уже почти год прошёл, скорее всего уже научился гуглить, но для остальных интересующихся напишу) Плохо что ты используешь слово yadra ведь ты знаешь слова year и size. Таким образом это выглядит максимльно нелепо. (думаю, не стоит так делать)
#include
#include
using namespace std;
class houses {
private:
int windows ;
bool pool;
float square;
string name;
public:
void message() {
cout
Получилось круто, можно еще вместо if(pool == 1) **код** else **код** , сделать так:
**Код** if(pool == 1) cout
2:07 мат хотел сказать
Можно не создавать метод get, а его содержимое просто написать в set.
Объясните, пожалуйста, как выводить строки с помощью классов, а не только тип int
#include
string название;
cin >> название;
cout
Ты вообще мой вопрос видел?
Функции используют классы? Что дальше, ноги используют человека? Может наоборот?
2:09
@@AlexanderSemenko это ху... это плохо
@@AlexanderSemenko Нет, не весь. Зачем вы балаболите о том, в чем не разбираетесь?
Я придумал термин «объектно-ориентированный», и я уверяю вас, что не имел в виду C++ ©Алан Кей
Начиная с 1984, Кэй был ведущим исследователем (Apple Fellow) в Apple до закрытия группы перспективных технологий (ATG), одного из отделов исследований и разработок. Тогда он присоединился к Walt Disney Imagineering в качестве главного исследователя (Disney Fellow) и оставался там до тех пор, пока Дисней не закрыл свою программу Disney Fellow. Позже Кэй работал в команде Applied Minds, затем стал главным сотрудником (Senior Fellow) в Hewlett-Packard, пока HP не распустил команду перспективных исследований в области программного обеспечения 20 июля 2005 года.
Теперь понятно, почему Smalltalk не взлетел.
Одноклассники в деле
А я не присваивал Private (значения) другим переменным и у меня всё работает вот код: #include "stdafx.h"
#include
#include
using namespace std;
class car {
private:
string color;
int wheels;
public:
void masseges () {
cout
#include
#include
#include
#include
#include
using namespace std;
class Tree {
private:
int number, number_List;
public:
void message() {
cout
Моё ДЗ:
#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 жесть ты древность откопал
#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
Что такое класс? Что такое объект?
Объект - область памяти.
Класс - тип данных. Определяет содержимое объекта, а так же методы для его обработки.
@@princessmary5556 В такой формулировке я не вижу разницы с Цэ без плюсплюс. Всё данные и там находятся в какой-то области памяти. Со всеми данными так или иначе и там работают. Ещё раз, я ничего при этом не "пытаюсь"! Я просто не понимаю, зачем слово функции заменили на слово методы, зачем набор данных заменили на слово класс? А в итоге не могу думать в формате С++. Более того, я в своё время занимался и преподавательской деятельностью и из этой работы я вынес стойкое убеждение, что прежде, чем ученику что-то объяснять, нужно выяснить, что у него в голове сложилось не так. Другими словами: "Ты думаешь и уверен в том, что видишь на небе звезды со всей Вселенной, а это не так. Ты видишь звёзды только находящиеся в нашей галактике. Да и то, только небольшую часть из 300 миллиардов оных." Вот как-то так. Кстати, примерно так же я в своё время объяснял понятные мне вещи, но непонятные однокурсникам.
шкода правильно пишется без h: skoda
0
одно не понятно, для чего нужны классы и структуры
в классы ты можешь добавлять методы и функции
А ЗАЧЕМ тогда в прайват пихать данные, если их потом изменять через паблик
Это принцип инкапсуляции, почитай в инете на эту тему. Там более подробно описано, чем я смогу тебе обьяснить.
Константин Галицкий я знаю примерно что это
►Без привата выходит короче. Разумеется, Гоша просто показывает, что так можно, но если оптимизировать именно этот код, то будет так:
#include
using namespace std;
class Auto
{
public:
int year, month, day;
void message()
{
cout
Не много не правильно объяснил суть функции set. Попробуй вызвать таким образом, shkoda.set(-32, 35, 'W'); и посмотри что выведется на экран. Чтобы такого не произошло в функции set ВСЕГДА производиться проверка на корректность принимаемых данных. Так как класс закрытый ящик, то ошибочные данные могут убить всю программу.
Парень, похоже, сам не понимает сути ООП, если описывая ООП, он по сути описывал преимущества процедурного программирования. В ООП главная мысль совсем в другом. Идеальный ООП код не содержит глобальных переменных, а все объекты не спутаны между собой нитями взаимосвязей. Любой объект можно заменить и не придётся переписывать под эту замену половину кода как в процедурном программировании.
Можете скинуть нормальный курс или видео обучение?
Действительно, вообще не понимает, великолепная и большая тема про ООП, а у него просто бред.
Паблык. Так раздражает.
Моё дз) Знаю поздно но что поделать)
Если здесь кто-то ещё есть подскажите как улучшить мой этот мини код, может его можно уменьшить?))
#include
using namespace std;
class Auto {
private:
int year, month, day;
public:
void message () {
cout
В функцию get помести ещо один параметр - название автомобиля.И при вивода на екран виводи не разние функции а одну но с разними значениями етой переменной.Тоесть с разним названием
P.S.Извините за руский.Я украинец русский знаю плохо а пишу на нем чмсто из уважения к собеседнику.На момент написания коментария 13 лет.
Богдан Шилов, спасибо за ответ
Привет спустя 5 лет , ты уже стал програмистом ?🙂🙂🙂
@@mbpdddнет
@@user-tq8bw3ej9v печально
Классы свободно можно помещать функции, такие классы называются локальные...даже в замыканиях лямбд их можно определять...прежде чем болтать чухню на видео лучше бы матч-часть разбирал
Правильно пишется Škoda
ничё так и не понял. Куча граблей для того чтобы воспользоваться одной функцией которую и так можно было написать.