Чт, 21.09.2017, 13:33
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

   
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

Сторінка 3 з 5«12345»
Модератор форуму: Ktara, НІКОЛЯ, Bandalak, volevikt 
Форум інформатиків » РОЗДІЛ ІІІ: МЕТОДИКА, ЗАСОБИ ВИКЛАДАННЯ ІНФОРМАТИКИ » 3.2 Методика викладання інформатики в середній школі (5-9 кл.) » Підручник 8 к Бондаренко, Ластовецький, Пилипчук, Шестопалов (Уточнення та корегування для наступних перевидань)
Підручник 8 к Бондаренко, Ластовецький, Пилипчук, Шестопалов
Пилипчук_О_П Дата: Чт, 23.03.2017, 10:17 | Повідомлення № 31
Ветеран спілкування
Повідомлень: 3774
Нагороди: 28
Рейтинг: 309
Цитата TYP ()
Як на мене це найкращий приклад розповісти дітям про поняття глобальних і локальних змінних! Коли для роботи на одній формі використовують значення змінної, що описана для першої форми.

Тут бажано подумати про стиль програмування. Для передавання даних між формами слід використовувати не прості змінні, а поля, щоб команда виглядала приблизно так:

Edit1.Text:=Form2.A;
Yura_Shrol Дата: Чт, 23.03.2017, 11:57 | Повідомлення № 32
Знаток супутникового інету
Повідомлень: 512
Нагороди: 1
Рейтинг: 45
"Очепятка" на сторінці 160  знизу

var Letter, Symbol: Ch, Char;

має бути

var Letter, Symbol, Ch: Char;
swetikccc Дата: Чт, 23.03.2017, 13:17 | Повідомлення № 33
Ветеран спілкування
Повідомлень: 3858
Нагороди: 25
Рейтинг: 346
Цитата TYP ()
Чому зарано? Як на мене це найкращий приклад розповісти дітям  про поняття глобальних і локальних змінних! Коли для роботи на одній формі використовують значення змінної, що описана для першої форми.
А ось чому
Код
static class Var
{
public static string s;//поле погано
public static string S { get; set;}//властивість добре
private static string name;
public static string Name
{
get
{
return name;
}

set
{
name = value;
}
}

}
Далі
Var.Name = textBox1.Text;
або
textBox1.Text = Var.Name;
А пояснювати область видимості змінної досить і
{
}



Відредаговано: swetikccc - Чт, 23.03.2017, 13:37
Пилипчук_О_П Дата: Чт, 23.03.2017, 14:20 | Повідомлення № 34
Ветеран спілкування
Повідомлень: 3774
Нагороди: 28
Рейтинг: 309
Цитата swetikccc ()
А ось чому
Код
static class Var
{
public static string s;//поле погано
public static string S { get; set;}//властивість добре
private static string name;
public static string Name
{
get
{
return name;
}

set
{
name = value;
}
}

}
Далі
Var.Name = textBox1.Text;
або
textBox1.Text = Var.Name;

Справді, використання властивостей дозволяє писати більш захищені програми.
Перевага доступу через поле тільки в тому, що написати можна швидше і легше зрозуміти, як це працює. Основний недолік: ризик, що буде спроба змінити значення поля, а отже й поведінку об'єкта без належного контролю (наприклад, відповідності типів, діапазонів значень тощо).
TYP Дата: Чт, 23.03.2017, 15:21 | Повідомлення № 35
Прописаний назавжди
Повідомлень: 356
Нагороди: 4
Рейтинг: 28
Цитата Пилипчук_О_П ()
Edit1.Text:=Form2.A;
Правильно буде Edit1.Text:=Unit1.A;
Пилипчук_О_П Дата: Чт, 23.03.2017, 16:15 | Повідомлення № 36
Ветеран спілкування
Повідомлень: 3774
Нагороди: 28
Рейтинг: 309
Цитата Yura_Shrol ()
"Очепятка" на сторінці 160 знизу
var Letter, Symbol: Ch, Char;
має бути
var Letter, Symbol, Ch: Char;

Дякую за уважність. Я цю помилку теж помітив.

Цитата TYP ()
Правильно буде Edit1.Text:=Unit1.A;

Ні (за умови, що тут використовуємо типові назви файлів/класів/об'єктів).
Я мав на увазі, що в модулі Unit2 описано клас TForm2, в якому є поле A. Цей модуль підключено до модуля Unit1 (рядок Uses), в якому й оголошено змінну Form2 типу TForm2. Таким чином ми звертаємось до властивості A об'єкта Form2 - примірника класу TForm2:

var Form2:TForm2;
....
Edit1.Text:=Form2.A;

Тут важливо розуміти, що після закриття форми Form2 вона не видаляється з пам'яті комп'ютера, а просто зникає з екрана. Завдяки цьому зберігається доступ до її відкритих членів (полів, методів), тобто описаних як public.
swetikccc Дата: Чт, 23.03.2017, 20:02 | Повідомлення № 37
Ветеран спілкування
Повідомлень: 3858
Нагороди: 25
Рейтинг: 346
Цитата Пилипчук_О_П ()
Завдяки цьому зберігається доступ до її відкритих членів (полів, методів), тобто описаних як public.

І принцип повністю суперечить ООП ;)
Пилипчук_О_П Дата: Чт, 23.03.2017, 20:50 | Повідомлення № 38
Ветеран спілкування
Повідомлень: 3774
Нагороди: 28
Рейтинг: 309
Цитата swetikccc ()
І принцип повністю суперечить ООП

Чому? Ми звертаємось до поля об'єкта. Специфіка мови така, що можливий прямий доступ до полів. Ми цим користуємось. Якщо це робити "прямими руками" - біди не буде. В інших мовах і/або фреймворках такої можливості може й не бути.

Що порушується, то це, як я вже писав, принцип безпечного програмування. Доступ через властивості - ознака безпечного стилю програмування.
TYP Дата: Чт, 23.03.2017, 21:14 | Повідомлення № 39
Прописаний назавжди
Повідомлень: 356
Нагороди: 4
Рейтинг: 28
Цитата Пилипчук_О_П ()
Я мав на увазі, що в модулі Unit2 описано клас TForm2, в якому є поле A. Цей модуль підключено до модуля Unit1 (рядок Uses), в якому й оголошено змінну Form2 типу TForm2. Таким чином ми звертаємось до властивості A об'єкта Form2 - примірника класу TForm2
Щось я не зрозумів. А - це поле чи властивість об’єкта Form2? Якщо А - це поле (текстове чи?) то воно як об’єкт має свої властивості. Якщо А це властивість класу TForm2 то що це за властивість? Як ви її описали?
Я чомусь подумав, що А це змінна яка прописана в модулі чи 1 чи 2 і до якої ми можемо звертатися вразі потреби.
gry Дата: Чт, 23.03.2017, 21:17 | Повідомлення № 40
Досвідчений учасник
Повідомлень: 1016
Нагороди: 3
Рейтинг: 105
Та чи Ви хизуєтеся... !!! ??? , чи учні у Вас з всієї області звезені... Вишукуємо крапки/коми, помилки... А в результаті маємо, що .. маємо... Опустіться на землю...

Відредаговано: gry - Чт, 23.03.2017, 21:59
Пилипчук_О_П Дата: Чт, 23.03.2017, 22:00 | Повідомлення № 41
Ветеран спілкування
Повідомлень: 3774
Нагороди: 28
Рейтинг: 309
Цитата TYP ()
Щось я не зрозумів. А - це поле чи властивість об’єкта Form2?

Якщо ми хочемо щось отримати з іншого вікна, то цілком логічно додати до опису форми відповідне поле. Далі питання в тому, як організувати доступ до поля: зробити його відкритим (public) - небезпечний варіант, чи оформити як властивість - безпечний варіант. Синтаксис наведених мною рядків коду від цього не зміниться (інкапсуляція!):
var Form2:TForm2;
....
Edit1.Text:=Form2.A;
Повторю: значення поля (чи властивості) А залишається доступним після закриття форми, а зникне лише після знищення форми в пам'яті (Form2.Destroy).
Пилипчук_О_П Дата: Чт, 23.03.2017, 22:09 | Повідомлення № 42
Ветеран спілкування
Повідомлень: 3774
Нагороди: 28
Рейтинг: 309
Цитата gry ()
Та чи Ви хизуєтеся... !!! ??? , чи учні у Вас з всієї області звезені... Вишукуємо крапки/коми, помилки... А в результаті маємо, що .. маємо... Опустіться на землю...

Біда в тому, що ми зараз на рівні зацікавленого початківця обговорюємо саме те, що згадано в програмі: основи ООП. І саме ці речі мав би розуміти учень, якщо береться за практичну роботу "Створення об’єктно-орієнтованої програми, що відображає вікно повідомлення."
Говорити нам про це потрібно хоча б для того, щоб якомога більше людей зрозуміли: слід було обмежитись консоллю з алгоритмами/процедурами або, принаймні, не згадувати ООП.
swetikccc Дата: Чт, 23.03.2017, 22:47 | Повідомлення № 43
Ветеран спілкування
Повідомлень: 3858
Нагороди: 25
Рейтинг: 346
Цитата TYP ()
Щось я не зрозумів. А - це поле чи властивість об’єкта Form2? Якщо А - це поле (текстове чи?) то воно як об’єкт має свої властивості. Якщо А це властивість класу TForm2 то що це за властивість? Як ви її описали?

Поле - це фактично змінна.
Властивість захист поля від доступу ззовні.
private static string name;// поле
public static string Name // властивість
{
get
{
return name;
}

set
{
name = value; // тут можемо накласти якісь перевірки
}
Нажаль на Лазарусі поясните не можу.
Та і Шарп я тільки починаю вивчати.
Цитата gry ()
Та чи Ви хизуєтеся... !!! ???

Яке хизування, я просто показав що не так то просто передати щось з однієї форми в іншу і що це дітям в середній школі непотрібно.


Відредаговано: swetikccc - Чт, 23.03.2017, 22:54
fox11 Дата: Пт, 24.03.2017, 08:17 | Повідомлення № 44
Тут живе...
Повідомлень: 163
Нагороди: 2
Рейтинг: 20
Лет 5 назад три года просидели (даже научные работы защищали) в Builder С++ с его формами, свойствами, событиями, сетевіми БД и т.п. ...хе. Когда вернулись к консольному программированию, стало легче и мне и детям. Не пойму зачем вы туда упорно лезете? Изучайте классы консольно и все.
Пилипчук_О_П Дата: Вт, 28.03.2017, 10:38 | Повідомлення № 45
Ветеран спілкування
Повідомлень: 3774
Нагороди: 28
Рейтинг: 309
Завтра о 12-00 проводитиму вебінар "Алгоритми з повтореннями та розгалуженнями".
Зареєструватись можна на сторінці http://www.ranok.com.ua/webinar.html/
Реєстрація потрібна для отримання сертифіката.
Форум інформатиків » РОЗДІЛ ІІІ: МЕТОДИКА, ЗАСОБИ ВИКЛАДАННЯ ІНФОРМАТИКИ » 3.2 Методика викладання інформатики в середній школі (5-9 кл.) » Підручник 8 к Бондаренко, Ластовецький, Пилипчук, Шестопалов (Уточнення та корегування для наступних перевидань)
Сторінка 3 з 5«12345»
Пошук:


© Форум інформатиків України, 2007-2017.