Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[C++] Wiele pytań co do klas



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> C i C++
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
dzejkob
Gość





PostWysłany: Wto Mar 28, 2017 2:22 pm  OP    Temat postu: [C++] Wiele pytań co do klas Odpowiedz z cytatem Pisownia

Witam.
Jestem na studiach, i mam wiele pytań związanych z klasami. Mimo szukania w wielu źródłach, na te konkretne problemy nie znalazłem odpowiedzi.
Pytania są w kodzie, w komentarzach, jeden plik to nagłówek klasy, drugi to sama klasa. Tyczy się to wektorów, ale nie jest to istotne dla pytań.
Nagłówek:
Kod:

#ifndef WEKTOR_H
#define WEKTOR_H
#include <iostream>
#include <math.h>
#include <fstream>
#include <iostream>

using namespace std;

class wektor
{
    public:
        wektor();               
        wektor(double x, double y, double z);    
        wektor(const wektor& copy);
        wektor Sum(wektor wektor2); //1. O co chodzi? moze byc wektor który w parametrach wywołania zamiast x,y,z ma wektor wektor2??
        wektor Opposed();
        double Length();
        wektor VectorProduct(wektor wektor2);
        double ScalarProduct(wektor wektor2);
        void PrintToScreen();
        void LoadFromFile(const char* plik); // 2. Dlaczego jest tutaj wskaźnik?
        double GetX();
        void SetX(double x);
        double GetY();
        void SetY(double y);
        double GetZ();
        void SetZ(double z);
    protected:
        
    private:
        double x;  // 3. nie rozumiem po co to tutaj jest, skoro wyzej w public jest ze wektor(double x, double y, double z)
        double y;  // to jest tylko jakby deklaracja tych x,y,z?
        double z;  // to w takim razie czym jest to wektor (double x itd..)?
};

#endif



Sama klasa:
Kod:

#include "wektor.h"

wektor::wektor() // 4. Rozumiem to jako utworzenie nowego wektora o nazwie wektor
{
    x=0;
    y=0;
    z=0;
}

wektor::wektor(double x, double y, double z) // 5. dlaczgeo wyzej bylo utworzenie wektora bez argumentow,
                                            // a tu jest z argumentami (double x, double y, double z)?
{
    this->x=x;                    
    this->y=y;
    this->z=z;
}

wektor::wektor(const wektor& copy)        // 6. Dlaczego się pisze "wektor::wektor" a nie samo wektor, chodzi o to
                                        //ze to sie tyczy tylko tego konkretnego obiektu wektor o nazwie wektor?
{
    x=copy.x;
    y=copy.y;
    z=copy.z;
}

double wektor::Length()                
{
    return sqrt(x*x+y*y+z*z);
}

wektor wektor::Opposed()
{
    return wektor(-x,-y,-z);
}

wektor wektor::Sum(wektor wektor2)
{
    double x2=wektor2.GetX();            
    double y2=wektor2.GetX();
    double z2=wektor2.GetZ();
    return wektor(x+x2,y+y2,z+z2);
}

double wektor::ScalarProduct(wektor wektor2)
{
    double x2=wektor2.GetX();            
    double y2=wektor2.GetX();
    double z2=wektor2.GetZ();
    double scalar=x*x2+y*y2+z*z2;
    return scalar;
}

wektor wektor::VectorProduct(wektor wektor2)
{
    double x2=wektor2.GetX();            
    double y2=wektor2.GetX();
    double z2=wektor2.GetZ();
    double wersor1=y*z2-z*y2;
    double wersor2=z*x2-x*z2;
    double wersor3=x*y2-y*z2;
    return wektor(wersor1,wersor2,wersor3);
}

double wektor::GetX()
{
    return x;
}

double wektor::GetY()
{
    return y;
}

double wektor::GetZ()
{
    return z;
}

void wektor::SetX(double x)
{
    this->x=x;
}

void wektor::SetY(double y)
{
    this->y=y;
}

void wektor::SetZ(double z)
{
    this->z=z;
}

void wektor::PrintToScreen()
{
    cout<< "Wektor ma wartosci: " <<x <<" " <<y <<" " <<z <<" ";
}

void wektor::LoadFromFile(const char* plik)
{
    ifstream plikk(plik);
    plikk>>x;
    plikk>>y;
    plikk>>z;
}



(Połączyłem posty. - Samolot)

Co do pytania 1 - nie usunałem go, oczywiste dlaczego jest tak napisana ta linijka kodu, pytanie nieaktualne ;)
Powrót do góry
lethern



Dołączył: 09 Paź 2007
Posty: 1106

PostWysłany: Wto Mar 28, 2017 2:52 pm      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
Sum(wektor wektor2); //1. O co chodzi? moze byc wektor który w parametrach wywołania zamiast x,y,z ma wektor wektor2??

Definiujesz funkcję która przyjmuje parametr o typie wektor. Czyli możesz zrobić dwa wektory i jeden do drugiego dodać. X,y,z się nie przejmuj
Cytat:
void LoadFromFile(const char* plik); // 2. Dlaczego jest tutaj wskaźnik?

Bo to właśnie typ dla łańcucha znaków, tablica znaków (inaczej wskaźnik na jej początek)
Cytat:
double x; // 3. nie rozumiem po co to tutaj jest, skoro wyzej w public jest ze wektor(double x, double y, double z)

to jest definicja pól wektora. wyżej miałeś opisane metody i co przyjmują, a tutaj masz opisane zawartość obiektu (instancji)
Cytat:
wektor::wektor() // 4. Rozumiem to jako utworzenie nowego wektora o nazwie wektor
Cytat:
wektor::wektor(double x, double y, double z) // 5. dlaczgeo wyzej bylo utworzenie wektora bez argumentow,
// a tu jest z argumentami (double x, double y, double z)?

to jest "implementacja" metody, musisz wiedzieć że to nie ma nic wspólnego z tym co napisałeś

Utworzyć wektor możesz (powinieneś) w bloku instrukcji, nie przy definiowaniu

W drugim pliku (cpp) opisane jest co metody robią.. Każda metoda zaczyna się zapisem: typ zwracany, klasa, separator ::, nazwa metody (w przypadku konstruktora - nie ma typu zwracanego, a "nazwa metody" jest taka sama jak nazwa klasy)

_________________
używasz Dev-Cpp? tools->editor options -> use tab character (włącz), smart tabs (wyłącz)... albo ściągnij np. Visual Studio C++ free.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> C i C++ Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.26001 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |