Садржај

Чланови објекта и чланови класе - задаци

1. Робот

Написати класу Robot поштујући следећу спецификацију.

Робот се креће по целобројној решетки у равни и описан је својим двема целобројном координатама и оријентацијом (окренут је навише, наниже, налево или надесно).

Конструктор има три параметра. Прва два су целобројне координате полазног положаја, а трећи је карактер, и то један од N, E, S, W. Слово означава почетну оријентацију робота (N значи оријентацију навише, E надесно, S наниже, а W налево). Ако му се проследи другачији карактер, конструктор треба да баци одговарајући изузетак.

Класа има следеће методе:

  • Метод Napred, који имплементира померање робота за наведени број места у смеру у ком је окренут (ако се не наведе број места, подразумева се једно место),

  • Метод Nalevo, који имплементира окретање робота налево за 90 степени,

  • Метод Nadesno, који имплементира окретање робота надесно за 90 степени,

  • Метод ToString, који враћа текстуалну репрезентацију објекта у облику Robot(X, Y, SMER) (види пример излаза ниже).

Класу треба написати тако да може да се изврши следећи метод, који демонстрира употребу класе.

Извршавањем овог метода треба да се добије следећи излаз:

Robot(7, 4, E)

Упутство:

Из описа класе Robot и примера демо-метода, може да се закључи како треба да изгледа јавни део класе Robot, тј. њен интерфејс.

Интерфејс тражене класе

Ово је само интерфејс класе Robot. Недостају имплементације метода, као и приватни део класе.

При имплементацији ове класе згодно је да се тренутна оријентација робота памти као једна од 4 могуће целобројне вредности (нпр. 0 за оријентацију навише, 1 за надесно, 2 за наниже и 3 за налево). У том случају, од помоћи могу да буду следећа статичка поља:

  • private const string ImeSmera = "NESW";

  • private static int[] dx = { 0, 1, 0, -1 };

  • private static int[] dy = { 1, 0, -1, 0 };

Поља су приватна, тако да корисник класе не може да их види и мења, а статичка су јер нам одговара да буду заједничка за све објекте (пошто никад не мењају вредност, нема потребе да сваки објекат заузима додатни простор за ова поља).

Наравно, могућа је и сасвим прихватљива и имплементација класе без ових поља. На пример, смер може да се памти као карактере, а у потребним методима да се користи нека од наредби гранања (if, switch) за разликовање смерова.

2. Карте

Написати класу Karta поштујући следећу спецификацију.

Класа Karta представља карту за играње из стандардног шпила од 52 карте. Карта је описана бојом и нумеричком вредношћу. У класи се дефинише набројиви тип

public enum Boja { Pik, Karo, Herc, Tref };

који представља боју карте. Нумеричка вредност карте је број од 2 до 15 (11 се не појављује, ас вреди 15, краљ 14,дама 13, жандар 12, нумеричка вредност осталих карата је број написан на њима).

Конструктор има један параметар типа string, који мора да има тачно два карактера. Први карактер представља нумеричку вредност карте и мора да буде један од A, K, Q, J, D, 9, 8, 7, 6, 5, 4, 3, 2 (карактер D представља десетку). Други карактер представља боју карте и мора да буде један од P, K, H, T. У случају неодговарајуће вредности параметра, конструктор треба да баци изузетак.

Класа има два својства само за читање, то су BojaKarte и Broj. Ова својства редом дају боју (као вредност набројивог типа) и нумеричку вредност карте (цео број).

Класа има два јавна статичка поља:

public static Boja BojaPrveKarte;
public static Boja AdutskaBoja;

Ова поља су заједничка свим картама и мењају се „споља” током рада програма, као што се приликом играња партије карата мења адутска боја и боја прве бачене карте у штиху.

Класа има метод Vrednost, који враћа целобројну вредност карте у текућем тренутку партије. Вредност карте зависи од адутске боје и боје прве карте у штиху. Ако боја карте није једнака ни адутској, ни боји прве карте, вредност карте једнака је њеној нумеричкој вредности. Ако је боја карте једнака адутској боји, њена вредност се увећава за 40, а ако је једнака боји прве карте, вредност се увећава за 20.

Класу треба написати тако да може да се изврши следећи метод, који демонстрира употребу класе.

Извршавањем овог метода треба да се добије следећи излаз:

Nosi igrac sa indeksom 3
to je karta 4 Karo

Упутство:

Из описа класе Karta и примера демо-метода, може да се закључи како треба да изгледа јавни део класе Karta, тј. њен интерфејс.

Интерфејс тражене класе

Ово је само интерфејс класе karta. Методи и својства нису имплементирани на смислен начин, већ само толико да задовоље синтаксу. Приватни део класе није наведен.

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+