Mam takie zadanie:
Proszę napisać klasę Image implementującą dwuwymiarowy obraz monochromatyczny (tzn.
obraz w odcieniach szarości).
Wskazówki:
- Obrazy monochromatyczne przechowywane są w pamięci komputerów jako
dwuwymiarowa tablica, której elementami są jasności kolejnych pikseli obrazu.
Jasność każdego piksela może być reprezentowana przez 8 bitową liczbę naturalną,
tzn. liczbę z przedziału 0 – 255 (unsigned char). Liczba 0 oznacza kolor czarny, 255 -
biały.- W programie wygodnie jest zdefiniować własną, krótszą nazwę (np. byte) dla typu
unsigned char.- Dwuwymiarowa tablica ma być alokowana dynamicznie.
- Zauważ że konstruktor, konstruktor kopiujący oraz operator = mają pewne wspólne
instrukcje np. alokujące pamięć. Programując należy unikać duplikacji kodu, a zatem
te wspólne instrukcje powinny być napisane w jednym miejscu np. w osobnej funkcji
initialize.
Klasa Image powinna mieć następujące funkcje składowe:
Na ocenę 3:- Konstruktor:
Image(int width, int height);- Metodę nadającą tą samą jasność wszystkim pikselom w obrazie, np.:
void fillInImage(unsigned char value)- Metodę służącą do odczytu piksela. Metoda powinna poprawnie obsłużyć sytuacje gdy
żądane indeksy wykraczają poza obszar obrazu. Zastanów się, jak można przekazać
użytkownikowi informację o błędzie (przekroczeniu zakresu indeksów)- Metodę służącą do zapisu piksela. Metoda powinna poprawnie obsłużyć sytuacje gdy
żądane indeksy wykraczają poza obszar obrazu.- Metody:
int getWidth();
int getHeight();- Program powinien być napisany wielomodułowo (np. w plikach image.h, image.cpp
oraz main.cpp)- Należy tak zaprojektować klasę Image aby działała poprawnie również w sytuacji gdy
użytkownik posługuje się pustymi obrazami, tzn. obrazami o wymiarach width = 0,
height = 0, jak w poniższej sytuacji:
Image image(0, 0);
Image copiedImage(image);
Image equaledImage(5, 4);
EqualedImage = image;
Na ocenę 4:- Destruktor
- Konstruktor kopiujący
10)Operator =
Na ocenę 5:- Funkcje służącą do utworzenia nowego obiektu klasy Image na podstawie fragmentu
innego obiektu. Jako argumenty funkcja powinna przyjmować indeks początkowego
oraz końcowego wiersza oraz początkowej oraz końcowej kolumny określające
fragment który będzie wykorzystany do utworzenia nowego obiektu.- Funkcję wyświetlającą obraz na ekranie.
Mimo iż nie jestem doświadczony to rozumiem w podstawach klasy, ale nie do końca rozumiem co ten program po kolei ma robić. Rozumiem, ze ma to być tablica dwuwymiarowa, zawierająca współrzędne x,y.
Funkcja void fillInImage(unsigned char value) to pewnie ma być progowanie jasności. Czy może mi ktoś pomóc, podpowiedzieć?