1 Востаннє редагувалося "mamkin haker" (11.05.2021 10:22:44)

Тема: ООП С++ основи

Вирішив почати вивчети С++
Основи ніби зрозумів і захотілося не тільки робити якісь арифметичні дії

Код працює

Притання:
    Чи є у вас зауваження до цього коду, може щось виправити? Або щось недоречно зроблено.
    Почав вивчати недавно.

Прихований текст

Хотілось б критики але не дуже сильно сваріть :D

// C++
#include <iostream>

using namespace std;

class Dog
{
public:
    float age_factor = 7;

    float human_age(float age_dog)
    {
        float human_age = age_dog * age_factor;
        return human_age;
    }

    int validate(float age_dog)
    {
        if (age_dog <= 0)
        {
            cout << "Введено некоректний вік!" << endl;
            return 0;
        }

        return 1;
    }
};

int main()
{
    float age, n, values;
    cout << "Введіть вік собаки: ";
    cin >> n;

    Dog dog;

    values = dog.validate(n);

    if ( values == 0 )
    {
        return 0;
    }

    age = dog.human_age(n);

    cout << "Вік собаки в людському еквіваленті = " << age << endl;

}

UPD:
задачку взяв звідси https://replace.org.ua/topic/13066/

2

Re: ООП С++ основи

усе погано

3

Re: ООП С++ основи

(т_т)

а все погано тобто я погано код написав чи як? *плак плак*

Прихований текст

це я просто для себе задачку робив, в тій темі там де пайтон я цю задачку на пайтоні зробив

4

Re: ООП С++ основи

bool validate. В C++ є тип bool зі значеннями true та false.
Ну і бажано методи з введенням та виведенням не тримати в класах, що займаються реальною роботою - тобто validate має просто повертати true/false, а cout << "Введено некоректний вік!" << endl; робити вже там, де validate викликається. Хоча це вже справа смаку. В цілому - код цілком гідний завдання.

Подякували: "mamkin haker"1

5

Re: ООП С++ основи

koala написав:

Ну і бажано методи з введенням та виведенням не тримати в класах

там просто в задачкі про клас було сказано тому я вирішив що потрібно в клас його помістити  :D

6

Re: ООП С++ основи

SRP

Подякували: "mamkin haker", leofun012

7

Re: ООП С++ основи

По-перше, не Dog, a CDoge, чи TDoge, якщо вже борман-стайл

8

Re: ООП С++ основи

І до чого тут ООП? *SCRATCH*

9

Re: ООП С++ основи

wander написав:

І до чого тут ООП? *SCRATCH*

Недороблена інкапсуляція

Подякували: "mamkin haker"1

10

Re: ООП С++ основи

koala написав:

Недороблена інкапсуляція

Доброго дня, ось так правильно :D?

код
//C++
#include <iostream>

class TDog
{
    private:

        float age_factor = 7;

    public:

        float converted_human_age(float age_dog)
        {
            float converted_age = age_dog * age_factor;

            return converted_age;
        }
};


bool validate(float age_dog)
{

    if (age_dog <= 0)
    {
        return true;
    }

    return false;
}


int main()
{
    float age, n;
    bool values;

    std::cout << "Введіть вік собаки: ";
    std::cin >> n;

    TDog dog;
    values = validate(n);

    if ( values )
    {
        std::cout << "Введено некоректний вік!\n";

        return 0;
    }

    age = dog.converted_human_age(n);

    std::cout << "Вік собаки в людському еквіваленті: " << age << std::endl;

}

11

Re: ООП С++ основи

ні, *RTFM*

12

Re: ООП С++ основи

"mamkin haker" написав:

Доброго дня, ось так правильно :D?

Koala написав:

код цілком гідний завдання.

ur_naz написав:

ні, *RTFM*

Вам не складно буде навести посилання на цей мануал?

Подякували: "mamkin haker"1

13

Re: ООП С++ основи

https://docs.microsoft.com/uk-ua/

14

Re: ООП С++ основи

ur_naz написав:

https://docs.microsoft.com/uk-ua/

Ви вважаєте, що людина не може починати програмувати, доки не прочитає весь матеріал за посиланням?
Цікаво дізнатися - ви вже закінчили читати його? Чи ще не програмуєте?

15

Re: ООП С++ основи

навіщо читати усе? треба читати те, що треба для виконання задачі.

16

Re: ООП С++ основи

Посилання гарне, але воно загальне.
Навряд початківець одразу зрозуміє що саме там тицьнути

17 Востаннє редагувалося koala (14.05.2021 15:40:52)

Re: ООП С++ основи

ur_naz написав:

навіщо читати усе? треба читати те, що треба для виконання задачі.

Ух ти ж! Але ви спершу сказали RTFM, а ця настанова зазвичай дається у відповідь на питання, відповідь на яке можна легко знайти, прочитавши відповідну документацію, і є натяком на те, що людина, яка поставила питання, даремно витрачає час співрозмовників, а на питання, яку саме документацію - дали саме те посилання. Тобто всю цю документацію, на вашу думку, треба прочитати. Тобто або ви не знаєте, що означає RTFM, або вважаєте, що все те, на що ви дали посилання, треба прочитати, щоб не витрачати час співрозмовників. Я ще раз вас питаю: ви все це прочитали чи дарма витрачаєте наш час?

Подякували: Q-bart, leofun012

18

Re: ООП С++ основи

Droid 77 написав:

Посилання гарне, але воно загальне.
Навряд початківець одразу зрозуміє що саме там тицьнути

ur_naz постійно зображає дуже розумного, однак користь від його порад зазвичай прямує до нуля. Зліва.

Подякували: ch0r_t, leofun012

19 Востаннє редагувалося "mamkin haker" (14.05.2021 18:15:48)

Re: ООП С++ основи

Droid 77 написав:

Посилання гарне, але воно загальне.
Навряд початківець одразу зрозуміє що саме там тицьнути

Чому ви так вважаєте?
Там все ж по пунктикам розкладено, також інтерфейс "інтуїтивно зрозумілий"
Але потрібні мінімальні знання англійської, щоб швидко щось знайти ( але я й без англійської знайшов :D )
Ось наприклад, для тих хто почав вивчати класи та структури: https://docs.microsoft.com/uk-ua/cpp/cp … w=msvc-160
А ось саме про класи https://docs.microsoft.com/uk-ua/cpp/cp … w=msvc-160

20

Re: ООП С++ основи

мені знадобилось 3 секунди, щоб нагуглити і 5 хвилин, щоб написати задачку в одну дію. що я роблю не так?