• Nie Znaleziono Wyników

2. Pojęcie klasy: sposoby deklarowania i definiowania składowych klasy,

N/A
N/A
Protected

Academic year: 2021

Share "2. Pojęcie klasy: sposoby deklarowania i definiowania składowych klasy, "

Copied!
38
0
0

Pełen tekst

(1)

Zofia Kruczkiewicz, ETE8305_2 1

Wprowadzenie do programowania obiektowego w C++

1. Główne zasady programowania obiektowego:

hermetyzacja, dziedziczenie, polimorfizm

2. Pojęcie klasy: sposoby deklarowania i definiowania składowych klasy,

3. Atrybuty dostępu do składowych - private, protected i public wspierające hermetyzację

4. Konstruktory i destruktory

5. Obiekty automatyczne, statyczne i dynamiczne 6. Składowe klasy typu static

7. Zmienne referencyjne, przekazywanie parametrów przez referencję, autoreferencja

8. Pliki nagłówkowe, dyrektywy preprocesora,

programy wieloplikowe

(2)

Zofia Kruczkiewicz, ETE8305_2 2

#include <iostrem.h> - dołączenie pliku nagłówkowego z katalogu standardowego

#include „TProdukt1.h” - dołączanie pliku nagłówkowego z katalogu bieŜącego

Pliki nagłówkowe powinny zawierać:

• definicje typów np. class punkt { float x, y;

public:

punkt (float, float);

void przesun (float, float);

};

• szablony funkcji i klas template <class T>

class stos { // ...}

• prototypy funkcji np. void wyswietl_float(float);

• definicje funkcji typu inline inline int Większy(int x, int y) {return x > y; }

• deklaracje zmiennych extern int zmienna;

• definicje stałych const int max = 3;

• wyliczenia enum Boolean {False, True};

• deklaracje nazw class kolo;

• dyrektywy #include <iostream.h>

• funkcje makra #define MAX(x, y) ((x) > (y) ? (x) : (y))

• stałe jawne #define TRUE 1

(3)

Zofia Kruczkiewicz, ETE8305_2 3

Uwaga:

Nie naleŜy nigdy wstawiać do pliku nagłówkowego:

definicji zwykłych funkcji: int Większy(int x, int y) {return x > y; } definicji zmiennych: int zmienna;

definicji stałych agregatów np. const char tab[] =”aaa”;

(4)

Zofia Kruczkiewicz, ETE8305_2 4

Przykład podziału programu na moduły

strukt.h dodatki.h

void f();

int z;

dodatki.cpp we_wy.cpp

mkolejka.h

mkolejka.cpp kolejka.cpp

main() we_wy.h

dodatki.obj we_wy.obj kolejka.obj mkolejka.obj

definiowany typ w postaci klasy funkcje

interfejsu programu

funkcje we_wy

funkcja main, funkcje u

Ŝ

ytku jednorazowego

tworzenie jednego pliku, definiowanie nazw z plików nagłówkowych

Łączenie Kompilacja

kolejka.exe

(5)

Zofia Kruczkiewicz, ETE8305_2 5

Przykład podziału programu na moduły

iostream.h

Biblioteka Borland Builder C++

TProdukt1.h

TProdukt1.cpp produkty.cpp

main()

TProdukt1.obj produkty.obj

definiowany typ w postaci klasy funkcje

we_wy

funkcja main, funkcje u

Ŝ

ytku jednorazowego

tworzenie jednego pliku, definiowanie nazw z plików nagłówkowych Łączenie

Kompilacja

produkty.exe

(6)

Zofia Kruczkiewicz, ETE8305_2 6

Zakładanie projektu wieloplikowego (File/New/Other)

(7)

Zofia Kruczkiewicz, ETE8305_2 7

Wybór typu projektu na typ konsolowy (Console Wizard)

(8)

Zofia Kruczkiewicz, ETE8305_2 8

Ustawienie parametrów projektu

(9)

Zofia Kruczkiewicz, ETE8305_2 9

Projekt z domyślnym plikiem Unit1.cpp

(10)

Zofia Kruczkiewicz, ETE8305_2 10

Zmiana nazwy projektu i nazwy domyślnej pliku – zapis projektu w wybranym

miejscu na dysku

(11)

Zofia Kruczkiewicz, ETE8305_2 11

Wybór katalogu projektu

(12)

Zofia Kruczkiewicz, ETE8305_2 12

Zmiana nazwy pliku domyślnego zapisywanego w wybranym

katalogu

(13)

Zofia Kruczkiewicz, ETE8305_2 13

Zmiana nazwy projektu tworzonego w nowym katalogu

(14)

Zofia Kruczkiewicz, ETE8305_2 14

Tworzenie kodu pliku z funkcją main

(15)

Zofia Kruczkiewicz, ETE8305_2 15

Tworzenie nowego pliku typu cpp

(16)

Zofia Kruczkiewicz, ETE8305_2 16

Wybór typu pliku

(17)

Zofia Kruczkiewicz, ETE8305_2 17

Nowy plik o domyślnej nazwie File1.cpp

(18)

Zofia Kruczkiewicz, ETE8305_2 18

Nadanie nowej nazwy plikowi

(19)

Zofia Kruczkiewicz, ETE8305_2 19

Podanie nowej nazwy TProdukt1.cpp

(20)

Zofia Kruczkiewicz, ETE8305_2 20

Plik TProdukt1.cpp - pusty

(21)

Zofia Kruczkiewicz, ETE8305_2 21

Wstawienie kodu – definicje metod klasy TProdukt1.cpp

(22)

Zofia Kruczkiewicz, ETE8305_2 22

Tworzenie nowego pliku nagłówkowego

(23)

Zofia Kruczkiewicz, ETE8305_2 23

Wybór typu pliku nagłówkowego

(24)

Zofia Kruczkiewicz, ETE8305_2 24

Nowy plik nagłówkowy o nazwie domyślnej File1.h

(25)

Zofia Kruczkiewicz, ETE8305_2 25

Zmiana nazwy pliku nagłówkowego

(26)

Zofia Kruczkiewicz, ETE8305_2 26

Podanie nazwy TProdukt1.h

(27)

Zofia Kruczkiewicz, ETE8305_2 27

Plik nagłówkowy TProdukt1.h - pusty

(28)

Zofia Kruczkiewicz, ETE8305_2 28

Plik nagłówkowy TProdukt1.h z kodem klasy TProdukt1

(29)

Zofia Kruczkiewicz, ETE8305_2 29

Wstawianie jedynie plików typu cpp do projektu – pliki

nagłówkowe są dołączane przez dyrektywę include

(30)

Zofia Kruczkiewicz, ETE8305_2 30

Dodawanie plików cpp do projektu

(31)

Zofia Kruczkiewicz, ETE8305_2 31

Wybór plików cpp

(32)

Zofia Kruczkiewicz, ETE8305_2 32

Kompilacja i linkowanie projektu – Build

(33)

Zofia Kruczkiewicz, ETE8305_2 33

Okno potwierdzające poprawność kompilacji i linkowania

(34)

Zofia Kruczkiewicz, ETE8305_2 34

Uruchomienie programu - Run

(35)

Zofia Kruczkiewicz, ETE8305_2 35

Działający program konsolowy

(36)

Zofia Kruczkiewicz, ETE8305_2 36

Program 6 – program wieloplikowy

//plik nagłówkowy TProdukt1.h – nie naleŜy go wstawiać do projektu //---

#include <iostream.h>

//---

#ifndef TPRODUKT1 //warunkowe dołączanie zawartości pliku

#define TPRODUKT1 // nagłówkowego

class TProdukt1 { //protected:

string nazwa;

float cena;

public:

TProdukt1(string, float );

TProdukt1(TProdukt1&);

~TProdukt1();

float Podaj_cene();

void Nadaj_cene(float );

string Podaj_nazwe ();

void Nadaj_nazwe(string );

int Porownaj_produkty(TProdukt1 );

void Wyswietl();

};

#endif

(37)

Zofia Kruczkiewicz, ETE8305_2 37

#include "TProdukt1.h" // zawartość pliku modułowego TProdukt1.cpp

TProdukt1::TProdukt1(string nazwa_, float cena_)

{ cout<<"Wywolany zwykly konstruktor z parametrami"<<endl;

nazwa = nazwa_;

cena = cena_; }

TProdukt1::TProdukt1(TProdukt1& p)

{ cout<<"Wywolany konstruktor kopiujacy"<<endl;

nazwa = p.nazwa;

cena = p.cena; }

TProdukt1::~TProdukt1()

{ cout << "Wywolany destrutor"<<endl; } float TProdukt1::Podaj_cene()

{ return cena; }

void TProdukt1::Nadaj_cene(float cena_) { cena = cena_; }

string TProdukt1::Podaj_nazwe () { return nazwa; }

void TProdukt1::Nadaj_nazwe(string nazwa_) { nazwa = nazwa_;}

int TProdukt1::Porownaj_produkty(TProdukt1 p)

{ return Podaj_nazwe()==p.Podaj_nazwe() && Podaj_cene()==p.Podaj_cene(); } void TProdukt1::Wyswietl()

{ cout<<"Cena produktu: "<<cena<<", Nazwa produktu: "<<nazwa<<endl; }

(38)

Zofia Kruczkiewicz, ETE8305_2 38

//---

#include "TProdukt1.h" //zawartość pliku z funkcją main //---

int main(int argc, char* argv[]) {

{ TProdukt1 produkt1("Zeszyt", 3.5), produkt2("Atrament", 1.6);

produkt1.Wyswietl();

produkt2.Wyswietl();

if (produkt1.Porownaj_produkty(produkt2))

cout<<"Produkty maja rowne atrybuty"<<endl;

else cout<<"Produkty nie maja rownych atrybutow"<<endl;

}

cout<<"Tutaj juz nie ma obiektow"<<endl;

//produkt1.Wyswietl();

cin.get();

return 0;

}

Cytaty

Powiązane dokumenty

 W komórce F2 wpisz formułę =LICZ.JEŻELI(ZAKRES;E2), która zlicza liczbę komórek wewnątrz podanego zakresu (u nas komórki C2:C26 opatrzone nazwą „zakres”),

Jeżeli nie, to rozłóż ją na czynniki pierwsze oraz znajdź najmniejszą liczbę pierwszą od niej większą oraz największą liczbę pierwszą od niej mniejszą.. Znajdź sumę

lista składowych klasy - deklaruje składowe klasy, czyli dane i.. b) Deklaracja składowych wewnątrz klasy. C) Definicja składowych na zewnątrz klasy – kod metod występuje w jednym

Następnie proszę wykonaj krótką notatkę w zeszycie.. Z dzisiejszej lekcji nie ma

• Pojęcie wystąpienie klasy (instancja klasy) oznacza obiekt, który jest “podłączony” do danej klasy, jest jej członkiem.. • Wystąpienia mogą być: bezpośrednie i

Formuła Wierzbickiej stanowi explicite wyrażenie tego po- glądu: ktoś czuje się tak, jak czuje się zwykle człowiek/ludzie wtedy, kiedy…; nato- miast zróżnicowanie uczucia

Załóżmy dalej, że chcemy dysponować następującymi operacjami na zbiorze znaków: dodanie elementu do zbioru, obliczenie liczby elementów, wyprowadzenie wszystkich elementów

Powłoka bash ma funkcję uzupełniania (kompletacji) wprowadzanych w wierszu poleceń nazw plików oraz nazw poleceń.. Po prostu wprowadź pierwsze znaki i naciśnij klawisz