Co to jest klasa?

2016-11-03 21:29

Rejestracja: 3 lata temu

Ostatnio: 3 dni temu

0

Witam.
Jestem początkujący w programowaniu... na razie uczę się samych podstaw c oraz trochę Cpp... czytam różne źródła i denerwuje mnie to, że ciągle jest mowa o jakiś klasach a ja, wstyd się przyznać, nie wiem co to... próbowałem oczywiście czytać o tym... jakieś programowanie obiektowe i wgl ;) ale jakoś nie zrozumiałem zbytnio... Byłby ktoś tak miły i wytłumaczył mi, jak krowie na granicy, co to mniej więcej jest? :D

Pozostało 580 znaków

2016-11-03 21:40

Rejestracja: 6 lat temu

Ostatnio: 1 godzina temu

1

klasa to np. pies jako gatunek (Canis lupus familiaris).
obiekt danej klasy, instancja danej klasy to np. pies Azor albo suka Sonia.

czyli klasa to taki jakby typ obiektu.


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
edytowany 1x, ostatnio: LukeJL, 2016-11-03 21:40

Pozostało 580 znaków

2016-11-03 21:45

Rejestracja: 6 lat temu

Ostatnio: 6 godzin temu

1

Niedorozwinięta proteza dla samego uzmysłowienia:

#include <iostream>
#include <string>
using namespace std;

//<cheats>
#define __attribute__(classname, instancename, attrname) \
    __##classname##__##instancename##__##attrname##__
//</cheats>

#define __person__attr__(instancename, attrname) \
    __attribute__(person, instancename, attrname)

#define person_name(self) \
    __person__attr__(self, name)

#define person_age(self) \
    __person__attr__(self, age)

#define spawn_person(self) \
    string person_name(self); \
    int person_age(self);

//na potrzeby ulatwienia Ci zycia - pieprzyc referencje i tak dalej
void print_person(string name, int age) {
    cout << "name: " << name << ", age: " << age << endl;
}

int main() {
    spawn_person(FirstPerson);
    spawn_person(SecondPerson);

    cin >> person_name(FirstPerson) >> person_age(FirstPerson);
    cin >> person_name(SecondPerson) >> person_age(SecondPerson);

    print_person(person_name(FirstPerson), person_age(FirstPerson));
    print_person(person_name(SecondPerson), person_age(SecondPerson));
    return 0;
}

Wprowadzając pojęcie struktury (czyli de facto klasy):

#include <iostream>
#include <string>
using namespace std;

struct person {
    string name;
    int age;
};

person load_person() {
    person result;
    cin >> result.name >> result.age;
    return result;
}

void print(person p) {
    cout << "name: " << p.name << ", age: " << p.age << endl;
}

int main() {
    person p1 = load_person(), 
           p2 = load_person();

    print(p1);
    print(p2);
}

http://ideone.com/d9UKzW

Dalej:

#include <iostream>
#include <string>
using namespace std;

struct person {
    string name;
    int age;

    friend istream &operator>>(istream &in, person &p) {
        return cin >> p.name >> p.age;
    }

    friend ostream &operator<<(ostream &out, person const &p) {
        return cout << "name: " << p.name << ", age: " << p.age;
    }
};

int main() {
    person p1, p2;
    cin >> p1 >> p2;
    cout << p1 << endl << p2 << endl;
}

To tak na początek.

edytowany 2x, ostatnio: spartanPAGE, 2016-11-03 21:55

Pozostało 580 znaków

2016-11-03 23:39
Moderator

Rejestracja: 16 lat temu

Ostatnio: 2 godziny temu

1
  1. Technicznie to jest definicja własnego, złożonego "typu danych"
  2. W wielu sytuacjach jest to też okreslenie pewnej jednostki kodu poniżej biblioteki a powyżej funkcji. Bo nie każda klasa, szczególnie np. w Javie czy C#, opisuje realny obiekt z dziedziny problemu.

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2016-11-04 01:00

Rejestracja: 3 lata temu

Ostatnio: 11 godzin temu

Lokalizacja: Kraków

1

https://www.udacity.com/cours[...]oundations-with-python--ud036
Przejdź sobie przez ten kurs. Autor dość dokładnie przedstawia czym jest i na czym polega programowanie obiektowe. A klasa jest jednym z kluczowych elementów tego zagadnienia.

W dużym skrócie (analogia do psa, który jest świetnym przykładem):

Jest sobie klasa Pies().
Pies() może szczekać, wtedy robi "hau"
Pies() może spać, wtedy ma stan "sen"
Pies() może lizać się po jajkach, wtedy ma stan "rest"

Ustalamy, że Azor jest przestawicielem (obiektem) klasy Pies() [czyli np. Azor = Pies()]
W tym momencie poprzez wpisanie odpowiedniej wartości sprawiamy, że Azor może wykonać wszystkie czynności które może zrobić pies.

Prościej się nie da. Pooglądaj kurs.

Pozostało 580 znaków

2016-11-05 21:17

Rejestracja: 3 lata temu

Ostatnio: 3 dni temu

1

Dzięki za wszystkie odpowiedzi! :D

Pozostało 580 znaków

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