Przekształcenie kodu z nie obiektowego na obiektowy C++

0

Proszę o przykład przekształcenia kodu nie obiektowego na obiektowy tego samego problemu w C++.W ogóle tego nie rozumiem, a chce zrozumieć. Muszę widzieć kody żeby to zrozumieć.

2

Muszę widzieć kody żeby to zrozumieć.

A pokaż to źródło z którego się uczysz i które nie pokazuje przykładów? Musisz też doprecyzować co konkretnie chcesz zrozumieć, obiektowy kod to bardzo szerokie pojęcie. Jeśli odpowiesz wszystko to z góry uprzedzam, że wątpię żeby ktoś Ci tutaj pisał kurs programowania obiektowego w formie odpowiedzi na forum.

2
Marta Długa napisał(a):

Proszę o przykład przekształcenia kodu nie obiektowego na obiektowy tego samego problemu w C++.W ogóle tego nie rozumiem, a chce zrozumieć. Muszę widzieć kody żeby to zrozumieć.

Moim zdaniem przeskok z proceduralnego na obiektowy NIE JEST CZYTELNY z samego kodu.
Bez kawałka teorii nie da rady.

Trzeba problem (zagadnienie) już u fundamentów przemyśleć w odmienny sposób.

0

Obok, w Javie, jest temat o w zasadzie identycznym tytule.

Inicjator zrozumiał tyle, że ma jak krowa ma nawalić placki tu i tam, tzn class
No niestety, to nie jest programowanie obiektowe

0

Przykład wyjęty z przysłowiowej d**y, ale jest przekształcenie:

void print_person_data(std::string name, stad::string lastname)
{
   std::cout << name << " " << lastname << std::endl;
}
class Person
{
   private:
      std::string name;
      std::string lastname;
  
   public:
      Person(std::string name, std::string lastname)
                 :name(name), lastname(lastname){}
      
      void print()
      {
           std::cout << this->name << " " << this->lastname << std::endl;
      }
};
3
auto f(int x) {
   return [x] (int y) { return x + y; };
}

należy przekształcić na

class f {
    int x;
public:
    f(int x) : x(x) {}
    int operator()(int y) { return x + y; }
};

Jak widać, zupełnie to nie ma sensu, wersja obiektowa wymaga pisanie dużo kodu, który w alternatywnym stylu (domknięcia) w ogóle nie jest potrzebny.

0

Przykład z "Hello world!" Jeżeli chcesz "to zrozumieć" i nauczyć się to przerób kod na to co zaproponował "Eldorad O" na klasę "class Person"
Zajrzyj też, na poniższe strony
https://www.p-programowanie.pl/cpp/konstruktory
https://cpp0x.pl/kursy/Programowanie-obiektowe-C++/486
https://edu.pjwstk.edu.pl/wyklady/pro/scb/PRG2CPP_files/PRG2CPP.html

#include <iostream>

using namespace std;

class HelloWorld
{
private:
    string sentence;

public:
    // default constructor - konstruktor domyslny
    HelloWorld()
    {
        sentence = "Hello World!";
    }

    // parameterized constructor
    HelloWorld(const string & n):sentence(n) {}

    // method
    void print()
    {
        cout << this->sentence << endl;
    }
    
    friend ostream& operator<<(ostream & os, const HelloWorld & s)
    {
        os << s.sentence;
        return os;
    }

    // class destructor
    ~HelloWorld() {}
};
// print function
void print(string s)
{
    cout << s << endl;
}

int main()
{
    // klasycznie
    string expression;
    cout << "\nPodaj wlasna sentencje: ";
    getline(cin, expression);

    print(expression); // call the print function

    // objektowo
    cout << HelloWorld(expression); // call the parameterized constructor

    cout << "\n";

    cout << HelloWorld(); // call the default constructor

    cout << "\n";

    HelloWorld phrase("Hello world!"); // create object
    cout << phrase << endl; // call friend ostream& operator<<
    phrase.print(); // method print

    getchar();
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1