Podstawy popularnych języków programowania obiektowego

Metody publiczne—metody obiektu

Język C++ wprowadza pojęcia metod publicznych i statycznych. Rozróżnienie to jest jednak nieintuicyjne i znacznie łatwiej zrozumieć różnice między nimi, jeśli, jak w Ruby czy Objective-C, nazwiemy je metodami klasy i obiektu.

  • Metody publicznemetodami obiektów. Każdy z obiektów posiada ich osobną instancję, a wewnątrz ich implementacji mamy dostęp do wszystkich pól obiektu.

  • Metody statycznemetodami klasy. Są one wspólne dla wszystkich obiektów danej klasy, a wewnątrz ich implementacji mamy dostęp jedynie do zmiennych statycznych.

C++

W sekcji public pliku nagłówkowego umieszczamy prototypy funkcji.

class Instrument
{
public:
    string getSound();
    string getType();
};

W pliku z implementacją, definiujemy ciała dla prototypów, pamiętając o właściwym wskazaniu przestrzeni nazw (Instrument:: przed nazwą funkcji).

string Instrument::getSound()
{
    return "The sound of an instrument" << endl;
}

string Instrument::getType()
{
    return "Unknown";
}

Objective C

Prototyp metody w Objective-C różni się odrobinę od tego z C. Rozpoczyna się on od znaku - lub +, później w nawiasie określa typ zwracany, a za nim nazwę metody. Dokładniejszy opis nazwy zawiera się w opisie składni Objective-C.

Metody obiektu w Objective-C rozpoczynamy od znaku -.

W pliku z interfejsem:

@interface Instrument : NSObject

- (NSString *) sound;
- (NSString *) type;

@end

W pliku z implementacją:

- (NSString *) sound
{
    @"The sound of an instrument";
}

- (NSString *) type
{
    return nil;
}

Java

public class Instrument
{
    public String getSound()
    {
        return "The sound of an instrument";
    }
    public String getType()
    {
        return "Unknown";
    }
}

C#

Deklaracje metod publicznych w C# są zbliżone do tych z C++.

class Instrument
{
    public string getSound()
    {
        return "The sound of an instrument";
    }
    public virtual string getType()
    {
        return "Unknown";
    }
}

Ruby

W Ruby nie deklarujemy typu zwracanego przez metodę. Dokładniejszy opis deklaracji metod zawiera się w opisie składni Ruby.

class Instrument
    def sound
        "The sound of an instrument"
    end
    def type
        "Unknown"
    end
end