Пятница, 29 Марта 2024, 01:01

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Общие обсуждения программистов » Принцип ООП
Принцип ООП
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(везде)
Все очень просто cool
Если поймешь все вышеперечисленное = ты про biggrin


Сообщение отредактировал 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 ()
То есть, это создание нового класса с вызовом функций и методов с другого класса (но нужно объявить его) или это создание объекта класса?

Создание нового класса естественно. Он расширяет функционал родителя.
Форум игроделов » Программирование » Общие обсуждения программистов » Принцип ООП
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг