Код IT
← Каталог

Учебные примеры ООП — Студент

Список оценок, средний балл и проходной порог.

PHP main.php
<?php

class Student
{
    public const PASSING_SCORE = 60;

    /** @var list<int> */
    private array $grades = [];

    public function __construct(private string $name) {}

    public function addGrade(int $grade): void
    {
        $this->grades[] = $grade;
        echo "Оценка {$grade} добавлена для {$this->name}\n";
    }

    public function averageScore(): float
    {
        if ($this->grades === []) {
            return 0;
        }
        return array_sum($this->grades) / count($this->grades);
    }

    public function isPassing(): bool
    {
        return $this->averageScore() >= self::PASSING_SCORE;
    }

    public function info(): void
    {
        $avg = $this->averageScore();
        $status = $this->isPassing() ? 'Зачёт получен' : 'Зачёт не получен';
        echo "Студент: {$this->name}\n";
        echo 'Оценки: [' . implode(', ', $this->grades) . "]\n";
        echo 'Средний балл: ' . number_format($avg, 1) . "\n";
        echo "{$status}\n";
    }
}

$student = new Student('Анна');
$student->addGrade(70);
$student->addGrade(85);
$student->addGrade(55);
$student->info();
<?php

class Student
{
    public const PASSING_SCORE = 60;

    /** @var list<int> */
    private array $grades = [];

    public function __construct(private string $name) {}

    public function addGrade(int $grade): void
    {
        $this->grades[] = $grade;
        echo "Оценка {$grade} добавлена для {$this->name}\n";
    }

    public function averageScore(): float
    {
        if ($this->grades === []) {
            return 0;
        }
        return array_sum($this->grades) / count($this->grades);
    }

    public function isPassing(): bool
    {
        return $this->averageScore() >= self::PASSING_SCORE;
    }

    public function info(): void
    {
        $avg = $this->averageScore();
        $status = $this->isPassing() ? 'Зачёт получен' : 'Зачёт не получен';
        echo "Студент: {$this->name}\n";
        echo 'Оценки: [' . implode(', ', $this->grades) . "]\n";
        echo 'Средний балл: ' . number_format($avg, 1) . "\n";
        echo "{$status}\n";
    }
}

$student = new Student('Анна');
$student->addGrade(70);
$student->addGrade(85);
$student->addGrade(55);
$student->info();