- •Використання файлів для зв’язків між програмами. Простенька Інструкція для Використання Файлів, які Ви Завантажили
- •Програмовані методи та прийоми налагодження програм.
- •Системні засоби налагодження програм.
- •Покрокове виконання програми при налагодженні.
- •Означення тестування. Загальна схема тестування. Тестування програм.
- •Типи тестів програм: змістовні; аналітичні; алгоритмічні; спеціальні.
- •Постановка задачі для автоматизації тестування програм.
- •Перетворення програми до функції як етап автоматизації тестування.
- •Функціональна модель методу нисхідного проектування програм.
- •Принцип покрокової деталізації при нисхідному проектуванні програм.
- •Прототипи функцій для технології нисхідного проектування.
- •Графічна модель висхідного проектування програм.
- •Порядок розробки програмних функцій за технологією висхідного проектування.
- •Покроковий збір часткових функцій за технологією висхідного проектування.
- •Постановка задачі об’єктно-орієнтованого проектування.
- •Класи, поля, методи, конструктори, деструктори як складові частини ооп.
- •Методи класу та властивості
- •Конструктори
- •Успадкування класів як частина технології ооп.
- •Функціональна і адміністративна організація роботи колективів для розробки програмних проектів.
- •Документування готових програмних продуктів.
-
Класи, поля, методи, конструктори, деструктори як складові частини ооп.
Оголошення класу
Клас – базове поняття в об’єктна-орієнтованому програмуванні. Примірник класу(екземпляр) - це об'єкт. Об'єкт - це сукупність даних (властивостей) і функцій (методів) для їх обробки. Властивості і методи називаються членами класу. Взагалі, об'єктом є все те, що підтримує інкапсуляцію.
Об’явити клас можна у такий спосіб:
class myClass {
// Class contents go here
}
Вміст класу це комбінація констант, змінних та функцій( інакше методи класу)
Методи класу та властивості
Методи оголошуються так само як і функції:
class myClass {
function myFunction() {
echo "You called myClass::myFunction";
}
}
Для виклику поза класом використовується оператор ->:
$obj = new myClass();
$obj->myFunction();
Посилання методу класу всередині самого класу, у коді має вигляд:
class myClass {
function myFunction() {
echo "You called myClass::myFunction";
}
function callMyFunction() {
// ???
}
}
Для того, щоб callMyFunction() викликав myFunction() існує спеціальна змінна $this. Ця змінна визначається тільки в межах області об’єкту і завжди вказує на сам об’єкт.
class myClass {
function myFunction($data) {
echo "The value is $data";
}
function callMyFunction($data) {
// Call myFunction()
$this->myFunction($data);
}
}
$obj = new myClass();
$obj->callMyFunction(123);
Таким чином, буде виведене значення 123.
Конструктори
Класи, у яких оголошено метод-констуктор, будуть викликати цей метод при кожному створення нового об'єкта, так що це може виявитися корисним, для того, щоб ініціалізувати стан об'єкту перед його використанням. Конструктор, який раніше збігався з назвою класу, тепер необхідно оголошувати як __construct (), що дозволить легше переміщати класи в ієрархіях. Конструктори в класах-батьків не викликаються автоматично. Щоб викликати конструктор, оголошений в батьківському класі, слід звернутися до методуparent::__construct().
<?php class BaseClass { function __construct() { print "Конструктор класу BaseClass\n"; } } class SubClass extends BaseClass { function __construct() { parent::__construct(); print "Конструктор класу SubClass\n"; } } $obj = new BaseClass(); $obj = new SubClass(); ?>
Деструктори
Перед звільненням пам'яті, займаної об'єктом, викликається метод __destruct (), яка не приймає параметрів. Він працює як дзеркальне відображення __construct (). Цей метод корисний для виконання процедури очищення.
<?php class MyDestructableClass { function __construct() { print "Конструктор\n"; $this->name = "MyDestructableClass"; } function __destruct() { print "Знищується " . $this->name . "\n"; } } $obj = new MyDestructableClass(); ?>
-
Успадкування класів як частина технології ооп.
Успадкування дозволяє одному об'єкту набувати властивості іншого об'єкта, не плутайте з копіюванням об'єктів. При копіюванні створюється точна копія об'єкта, а при спадкуванні точна копія доповнюється унікальними властивостями, які характерні тільки для похідного об'єкта
Успадкування класу
Як вже було зазначено вище, успадкування дозволяє одному об'єкту набувати властивості іншого об'єкта. Приклад цього процесу наведемо у наступному коді:
class a {
function test()
{
echo "a::test called";
}
function func()
{
echo "a::func called";
}
}
class b extends a {
function test()
{
echo "b::test called";
}
}
class c extends b {
function test()
{
parent::test();
}
}
class d extends c {
function test()
{
b::test();
}
}
$a = new a();
$b = new b();
$c = new c();
$d = new d();
$a->test(); // Виведення "a::test called"
$b->test(); // Виведення "b::test called"
$b->func(); // Виведення "a::func called"
$c->test(); // Виведення "b::test called"
$d->test(); // Виведення "b::test called"
З початку, ми оголосили клас А, потім клас В, що розширює клас А. Клас В має також метод test(), який перекриває оголошений в А, таким чином виводячи так званий b::test.
Таким чином розширення об’єктів буде обмеженим, бо ви зможете лише перевизначити функціональні можливості, що надаються «батьківському класу» , без будь – якої можливості повторного використання. На щастя, батьківські класи можна отримати за допомогою особливого parent:: namespace, як ми це робили для класу С вище, ви також можете отримати доступ до будь-яких інших класів предка як ми це робили, наприклад, в класі D.