private public



Private и protected

Автор Мурад Ахундов задал вопрос в разделе Другие языки и технологии

Зачем нужны классы в c++? Никак не могу понять... Что такое private, public зачем они нужны и т. д? и получил лучший ответ

Ответ от
потому что не используешь на практике. ерунду всякую пишешь.
попробуй написать GUI сначала на winapi который без ООП как такового, потом на qt, который с ООП. вот тогда и поймешь зачем

Ответ от Максим[гуру]
Изучай ооп. Могу скинуть пример на java, чтоб понял сам принцип. public и private это видимость, private не виден извне.
Создаём объект Human - человека:
Human human = new Human(23,"Петя");
Где передали параметры 23 (возраст) и "Петя" (имя) в конструктор. Эти параметры сохранены в объекте human в его полях. Теперь вызываем для данного объекта функцию, которая имеет доступ к полям объекта.
int age = human.getAge(); функция getAge, вызванная у объекта human типа Human, вернула его возраст. Вызываем другой метод: human.kill();
Теперь создаем наследника классу Human, назовём его Child. Child является Human, но может переписать методы класса Human и добавить новые, таким образом расширить класс и изменить.
Human human2 = new Child(23,"Вася",human); тут у конструктора есть дополнительный параметр, где задаётся родитель ребёнка.
Теперь вызываем human2.kill(); этот метод мог быть переписан.

Ответ от Cтранник[гуру]
на первый взгляд классы, private, public - это показуха у "умных" программистов. если программа пишется для себя и строк там всего ничего, то легко можно обойтись структурным программированием и времени уйдет меньше. всегда можно понять что делает эта программа и где могут находиться ошибки. а если эта же программа со временем становится побольше, появится много повторяющегося кода и возможно кто-то другой попытается понять что там происходит, то лучше уж один раз понять как работают классы и как их можно использовать. потому что допустим код программы стал занимать минимум 10000 строк, то уже через пару месяцев самому (не то что другому человеку) будет очень сложно понять что делает программа. а классы сильно уменьшат количество строк и новых переменных. private и public также сильно помогут если кто-то другой начнет разбираться в программе или если со временем забудется программа. всегда можно будет догадаться, что некоторая переменная или функция не должна использоваться из внешних классов

Ответ от Krab Bark[гуру]
Коротко - классы это блоки, из которых строят программы. Естественно, строительство из блоков нужно только для довольно крупных сооружений, но когда ты работаешь в Windows, даже для простых программ для современного ввода-вывода надо использовать оконный интерфейс, а он сам по себе - такая сложная штука, что построен по ООП из классов.

Ответ от Люблю Украину (improve)[гуру]
public, private и protected это модификаторы доступа. Что бы управлять доступом к переменным и функциям класса.
А класс это когда переменные и функции находятся в одной оболочке. Так удобней. Плюс ещё есть инкапсуляция, полиморфизм и наследование. Это так же работа с группой переменных и функций, которые поместили в класс.

Ответ от Недо Ум[гуру]
Создавая классы человек может программировать как бы на более высоком уровне, объектами.
Если в низкоуровневом программировании программируют командами, потом в более высокоуровневом программировании уделяют внимание функциям, структуре, то уже в ооп за основу ложатся моделируемые объекты.
Объекты описываются в классе. Описать можно всё что угодно. Например, автомобили для игр, или персонажей, или реальных людей, Всё что нужно. Даже абстракцию какую нибудь.
Это всё в конечном итоге помогает собрать программу.
с ООП связаны 3 понятия.
полиморфизм
Инкапсуляция
наследование
инкапсуляция. По сути это и создание объекта, например можно инкапсулировать кошку, создать её компьютерную модель, написать класс. Дальше уже внутренние данные класса (поля) могут быть защищёнными, закрытыми или открытыми. private public protected
когда создается class то все члены в нём закрыты, по умолчанию.
class A{
int x, y, z;
}
можно сделать члены открытыми или защищёнными добавив директивы public protected
class A{
int x; // privae
public:
int y; // public
protected:
int z; // protected
private:
int g; // опять закрытая переменная
}
Вся эта чушь с закрытыми членами нужна только для библиотек которыми будут пользоваться другие люди. если ты пишешь для себя, можешь подумать о них чисто для удобства в некоторых случаях.
в C++ структура это тот же класс, только по умолчанию все переменные уже открыты - public
struct A{
int x, y, z; //все открыты
}
что означает открытые члены и закрытые?
class A{
int x;
public:
int y;
int get_x(){ x = 5; return 5; }
}
int main(){
A a;
a.x = 5; // ошибка. x недоступен
a.y = 5; // ok
int x = a.get_x(); //вызвали функцию которая меняет значение закрытой переменной и возвращает её значение
return 0;
}
закрытые члены класса скрывают от пользователя его внутреннюю реализацию. По сути то что открыто в классе, это его интерфейс.
Подобно как в автомобиле, интерфейс это руль, а что скрыто внутри автомобиля это закрытые члены.
наследование. Один класс может наследовать другой. Например есть графический пользовательский интерфейс. Всё что мы видим это элементы. Каждый элемент подразделяется на кнопки, текстовые поля картинки и так далее.
class GUIElement{
int x, y, x2, y2; //например координаты на экране
};
class GUIButton : public GUIElement[
}
GUIButton наследует класс GUIElement. можно добавить описатели private public protected, не обязательно.
Не помню что по умолчанию, но если public то все public переменные базового класса станут public для дочернего. Если protected то доступны все члены. непомню точно.
Это всё реализует идею полиморфизма.
Один интерфейс для обработки множеств разных объектов.
например
int get_x_from_gui_element( GUIElement element ){
return element.x;
}
потом например есть кнопка
GUIButton button;
и уже можно указывать кнопку как аргумент
get_x_from_gui_element( button );

Ответ от =Serge=[гуру]
А не нужно понимать то, к чему мозг ещё не дорос. Вот будет 18 - поймёшь, почему.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Зачем нужны классы в c++? Никак не могу понять... Что такое private, public зачем они нужны и т. д?
Класс программирование на Википедии
Посмотрите статью на википедии про Класс программирование
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*