Принцип ООП
|
|
First | Дата: Среда, 26 Февраля 2014, 18:56 | Сообщение # 1 |
Уолтер Брайт
Сейчас нет на сайте
| Не могу понять эту философию, работу с классами. Читал громадные статьи, где бородатые дяди пишут супер накручено, но нету понятного примера и простого текста вкратце работы ООП. Что оно вообще такое и с чем его едят?
|
|
| |
Sanoraag | Дата: Среда, 26 Февраля 2014, 18:58 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Могу скинуть пособия где хорошо всё описано
|
|
| |
Saitei | Дата: Среда, 26 Февраля 2014, 19:17 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| First, Код #include <iostream> #include <time.h>
char map[10][10];
class Enemy { private: char x,y; public: Enemy() { x = rand()%10; y = rand()%10; map[x][y] = 'c'; } void Update() { switch(rand()%5) { case 0: break; case 1: { if(y>1) { map[x][y] = 0; y--; map[x][y] = 'c'; break; } } case 2: { if(y<9) { map[x][y] = 0; y++; map[x][y] = 'c'; break; } } case 3: { if(x>1) { map[x][y] = 0; x--; map[x][y] = 'c'; break; } } case 4: { if(x<9) { map[x][y] = 0; x++; map[x][y] = 'c'; break; } } } } };
int main() { srand(time(false)); Enemy some[4]; bool finished = false; while(!finished) { for(int y = 0; y < 10; y++) { for(int x = 0; x < 10; x++) { std::cout<<map[x][y]; } std::cout<<std::endl; } for(int i = 0; i < 4; i++) { some[i].Update(); } system("cls"); } return 0; } Попробуй сделать без классов\структур таких же 100 штук :)
P.S. В коде куча косяков, просто лень было писать x)))
|
|
| |
Sanoraag | Дата: Среда, 26 Февраля 2014, 19:31 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Saitei, не ты извини конечно же, но ты или читать не умеешь или не понимаешь чего человеку надо. И не надо кидать ге качественный код,чтобы не смущать человека. Еще раз извиняюсь за некоторую грубость
|
|
| |
NEBR | Дата: Среда, 26 Февраля 2014, 19:54 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| Инкапсуляция, наследование, полиморфизм - сейчас считаются тремя китами ООП. Читай статьи, туторы о них и потихоньку начнешь вкуривать философию
King Size #Gamiron12
|
|
| |
Saitei | Дата: Среда, 26 Февраля 2014, 20:06 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Sanoraag, я скинул код ради того чтобы человек увидел глазами одно из применений ООП. Наследование, полиморфизм и т.п. - дело хорошее, но для начала надо же показать человеку что такое вообще объект.
Сообщение отредактировал Saitei - Среда, 26 Февраля 2014, 20:06 |
|
| |
Storm54 | Дата: Среда, 26 Февраля 2014, 23:24 | Сообщение # 7 |
постоянный участник
Сейчас нет на сайте
| Статья
Проще этого точно не найдешь. В свое время я начал изучение ООП именно с этой статьи. После этого можно про наследование чего-нить почитать, но сначала советую написать парочку простеньких программ, чтобы закрепить, как общее понимание, так и синтаксис.
Сообщение отредактировал Storm54 - Среда, 26 Февраля 2014, 23:26 |
|
| |
AppDeveloper | Дата: Четверг, 27 Февраля 2014, 01:12 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| Все очень просто. Вся работа происходит в классах => вне классов работа невозможна. В классах создаются поля и методы. Они могут вызываться из других классов(создавая объект), либо вызываться на уровне класса(быть статическими). Например: Код class MyClass() { поле1, поле2 ... метод1(), метод2() ... } Наследование: Код class ImaplementClass() extends MyClass { тут можно вызывать, например, метод1() } Реализация интерфейса: Код interface IInterface() { интерфейс1(), интерфейс2() } class IClass() implements IInterface { интерфейс1() { ... } } Полиморфизм - переопределение методов Код class MyClass2() extends MyClass { @override метод1() { ... } } Инкапсуляция - сокрытие данных. Если хочешь что бы доступа к переменным не было(или были) - private(только в классе), protected(в классе и в потомках), public(везде) Все очень просто Если поймешь все вышеперечисленное = ты про
Сообщение отредактировал AppDeveloper - Четверг, 27 Февраля 2014, 01:14 |
|
| |
First | Дата: Четверг, 27 Февраля 2014, 01:34 | Сообщение # 9 |
Уолтер Брайт
Сейчас нет на сайте
| Цитата AppDeveloper ( ) Наследование:
То есть, это создание нового класса с вызовом функций и методов с другого класса (но нужно объявить его) или это создание объекта класса?
|
|
| |
OpenGOO | Дата: Четверг, 27 Февраля 2014, 01:39 | Сообщение # 10 |
почти ветеран
Сейчас нет на сайте
| Обзор Объектно-Ориентированного Программирования
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
|
|
| |
AppDeveloper | Дата: Четверг, 27 Февраля 2014, 01:40 | Сообщение # 11 |
частый гость
Сейчас нет на сайте
| Цитата First ( ) То есть, это создание нового класса с вызовом функций и методов с другого класса (но нужно объявить его) или это создание объекта класса? Создание нового класса естественно. Он расширяет функционал родителя.
|
|
| |