Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Hed-kun

Программирование, т. 3

Рекомендованные сообщения

Она запускалась как 5 студий одновременно. И работала так же

Ну и там плюсы корявые.


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

ну я тоже на работе сижу

тоже чекаю пд, тоже пишу код

 

так что знаю как ты работаешь :trollface:

у тебя тоже в левой части экрана ютуб / фильм, а в правой код? :trollface:

на нормальной работе у разработчика 2 монитора :buba:

 

А разве HTML5 - это не просто связка последних версий HTML+CSS+JS?

ну обычно когда говорят о html5 - то подразумевают и свг ещё ко всему. хотя в жаваскрипте вроде бы ничего не поменялось

Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

ну я тоже на работе сижу

тоже чекаю пд, тоже пишу код

 

так что знаю как ты работаешь :trollface:

у тебя тоже в левой части экрана ютуб / фильм, а в правой код? :trollface:

на нормальной работе у разработчика 2 монитора :buba:

Пробовал - глаза болят, от того что часто внимание переводил (2х24). Иногда, конечно, чувствуется, что был бы полезен второй, но это очень небольшая часть от всего времени, поэтому и так нормально.

Поделиться сообщением


Ссылка на сообщение

Очень странно.

Все проблемы со зрением из-за компа как раз из-за того, что глаза не фокусируются на разную дистанцию. А у тебя от зарядки для глаз глаза заболели :trollface:


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

Скажите а инкапсуляция это чтото типа:

 

class MasterCapsul

{

public:

void ChangeInt(int x){a=x;}

void ChangeFloat(float x){b=x;}

void ChangeChar(char x){c=x;}

void ShowInt(){cout<<a<<endl;}

 

private:

int a;

float b;

char c;

};

 

 

Поделиться сообщением


Ссылка на сообщение

Скажите а инкапсуляция это чтото типа:

 

class MasterCapsul

{

public:

void ChangeInt(int x){a=x;}

void ChangeFloat(float x){b=x;}

void ChangeChar(char x){c=x;}

void ShowInt(){cout<<a<<endl;}

 

private:

int a;

float b;

char c;

};

 

 

http://lmgtfy.com/?q=%D0%98%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F

Поделиться сообщением


Ссылка на сообщение

ох вы пиздатые... читал я тот гугл

Поделиться сообщением


Ссылка на сообщение

Инкапсуляция - скрытие логики и данных, которые не должна быть видны снаружи, а нужны только для реализации класса.

Чтобы у человека, который использует класс, не было возможностей творить с ним разную хуйню. Плюс упрощение интерфейса доступа.

 

И обычно методы для доступа к полям называют Get... и Set..., если только не надо какое-то особенное действие.

Ну и поля полезно еще скрывать и тем, что при нужде ты сможешь поменять полностью реализацию хранения информации, оставив весь остальной код без изменений, тк интерфейс метода доступа не поменялся.


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

хз как где, а в шарпе есть встроенная конструкция get/set для этих целей

пример

 

class Prodota

{

private int ping = 0;

 

public int Ping

{

get { return ping; } // для получения значения

set { ping = value; } // для установки значения

}

}

Поделиться сообщением


Ссылка на сообщение

Да. Плюсы обделены наличием встроенных свойств. Но в принципе не сильно важно. Свой такой метод пишется на 30 секунд дольше максимум.


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

угу, но так гораздо удобнее использовать как по мне

 

prodota.Ping = 1; >>> prodota.SetPing(1);

Write(prodota.Ping); >>> Write(prodota.GetPing());

Поделиться сообщением


Ссылка на сообщение

Это да :sad:


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

а если у тебя геттер/сеттер не просто дают/записывают значение, но и вычисляют что-нибудь? А точнее, что если тебе потом необходимо будет это поле усложнить.


Изменено пользователем Ubububu

Поделиться сообщением


Ссылка на сообщение

а если у тебя геттер/сеттер не просто дают/записывают значение, но и вычисляют что-нибудь? А точнее, что если тебе потом необходимо будет это поле усложнить.

берёшь и усложняешь

set {

if (value < 0 || value > 10)

throw new InvalidArgumentException();

ping = value;

}

Поделиться сообщением


Ссылка на сообщение

а если у тебя геттер/сеттер не просто дают/записывают значение, но и вычисляют что-нибудь? А точнее, что если тебе потом необходимо будет это поле усложнить.

easy. :trollface:

 

#define AFTERGET(x) Get ## x

#define AFTERSET(x) Set ## x

 

#define GENERATE_FIELD(FIELD_TYPE,FIELD,PROPERTY_VISIBLE_NAME_) \

protected: \

FIELD_TYPE FIELD; \

public: \

FIELD_TYPE AFTERGET(PROPERTY_VISIBLE_NAME_)() { return FIELD; } \

void AFTERSET(PROPERTY_VISIBLE_NAME_)(FIELD_TYPE NewValue){ this->FIELD = NewValue; }

 

 

class A {

GENERATE_FIELD(int,m_intvalue,MySweetInt);

};

 

class B : public A {

public:

void SetMySweetInt(decltype(m_intvalue) vvv){

m_intvalue = 123123;

}

};

 

int _tmain(int argc, _TCHAR* argv[]) {

A a;

a.SetMySweetInt(1); // = 1;

 

B b;

b.SetMySweetInt(33); // = 123123;

Поделиться сообщением


Ссылка на сообщение

А, это в шарпике есть такой сахар, но возьмём цпп, к примеру.

 

а если у тебя геттер/сеттер не просто дают/записывают значение, но и вычисляют что-нибудь? А точнее, что если тебе потом необходимо будет это поле усложнить.

easy. :trollface:

 

 

#define AFTERGET(x) Get ## x

#define AFTERSET(x) Set ## x

 

#define GENERATE_FIELD(FIELD_TYPE,FIELD,PROPERTY_VISIBLE_NAME_) \

protected: \

FIELD_TYPE FIELD; \

public: \

FIELD_TYPE AFTERGET(PROPERTY_VISIBLE_NAME_)() { return FIELD; } \

void AFTERSET(PROPERTY_VISIBLE_NAME_)(FIELD_TYPE NewValue){ this->FIELD = NewValue; }

 

 

class A {

GENERATE_FIELD(int,m_intvalue,MySweetInt);

};

 

class B : public A {

public:

void SetMySweetInt(decltype(m_intvalue) vvv){

m_intvalue = 123123;

}

};

 

int _tmain(int argc, _TCHAR* argv[]) {

A a;

a.SetMySweetInt(1); // = 1;

 

B b;

b.SetMySweetInt(33); // = 123123;

 

Я про пример, что prodota.Ping = 1; а не через геттер/сеттер.

Поделиться сообщением


Ссылка на сообщение

А, это в шарпике есть такой сахар, но возьмём цпп, к примеру.

 

а если у тебя геттер/сеттер не просто дают/записывают значение, но и вычисляют что-нибудь? А точнее, что если тебе потом необходимо будет это поле усложнить.

easy. :trollface:

 

 

#define AFTERGET(x) Get ## x

#define AFTERSET(x) Set ## x

 

#define GENERATE_FIELD(FIELD_TYPE,FIELD,PROPERTY_VISIBLE_NAME_) \

protected: \

FIELD_TYPE FIELD; \

public: \

FIELD_TYPE AFTERGET(PROPERTY_VISIBLE_NAME_)() { return FIELD; } \

void AFTERSET(PROPERTY_VISIBLE_NAME_)(FIELD_TYPE NewValue){ this->FIELD = NewValue; }

 

 

class A {

GENERATE_FIELD(int,m_intvalue,MySweetInt);

};

 

class B : public A {

public:

void SetMySweetInt(decltype(m_intvalue) vvv){

m_intvalue = 123123;

}

};

 

int _tmain(int argc, _TCHAR* argv[]) {

A a;

a.SetMySweetInt(1); // = 1;

 

B b;

b.SetMySweetInt(33); // = 123123;

 

Я про пример, что prodota.Ping = 1; а не через геттер/сеттер.

ну тут ты задаешь полю - значит переписывай код.

 

как таковых геттеров сеттеров в плюсах нету. Да и не нужны они: в с++ много вариантов передачи параметров, иногда лучше копировать, иногда через конст реф, иногда просто реф. сейчас вообще можно перемещать через move. Ради оптимизации приходится чем то жертвовать )))

Поделиться сообщением


Ссылка на сообщение

А, это в шарпике есть такой сахар, но возьмём цпп, к примеру.

...

Я про пример, что prodota.Ping = 1; а не через геттер/сеттер.

ну вызов prodota.Ping = 1; это аналог prodota.SetPing(1);

значение после = это как аргумент метода и ничего более

Поделиться сообщением


Ссылка на сообщение

А, это в шарпике есть такой сахар, но возьмём цпп, к примеру.

...

Я про пример, что prodota.Ping = 1; а не через геттер/сеттер.

ну вызов prodota.Ping = 1; это аналог prodota.SetPing(1);

значение после = это как аргумент метода и ничего более

вот что шарп делает с людьми.

им похуй на способы передачи аргумента в функцию, ведь СИШАРП СДЕЛАИТ ВСЕ ЗА МИНЯ

Поделиться сообщением


Ссылка на сообщение

а какой смысл о них думать, если мне например нужно только установить значение поля (или получить его) предварительно его мб чем-то проверив? :hmm:

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...