25
Preliminary Object-Oriented Design Clickermatic Software Clicker

Preliminary Object-Oriented Design Clickermatic Software Clicker

Embed Size (px)

Citation preview

Page 1: Preliminary Object-Oriented Design Clickermatic Software Clicker

Preliminary Object-Oriented Design

Clickermatic Software Clicker

Page 2: Preliminary Object-Oriented Design Clickermatic Software Clicker

Client Software

Page 3: Preliminary Object-Oriented Design Clickermatic Software Clicker

Summary View of Client Architectural Design

ClientController Timer

UserInterface

Historian

NetworkInterface

DefaultProtocol

Question

ConnectionManager

Protocol <<interface>>

Historian.Record

TimerListener <<interface>>

1

1

1

1

1

1

1

1

1

1

1

1

1

0..n

1

1

1

1

Page 4: Preliminary Object-Oriented Design Clickermatic Software Clicker

Question

- number: int- text: string- reference: string- timeToAnswer: int+ QUESTION_TYPE_MULTIPLE_CHOICE: int+ QUESTION_TYPE_NUMERIC: int+ QUESTION_TYPE_SHORT_ANSWER: int

Detail View: Question Class Diagram

Page 5: Preliminary Object-Oriented Design Clickermatic Software Clicker

Historian

- NUMBER_OF_QUESTIONS_TO_TRACK: int- numberOfQuestionsAnsweredCorrectly: int- numberOfQuestionsAnsweredIncorrectly: int- records: list<Historian.Record>

+ resetTallies(): void+ addQuestionAnswerRecord(questionNumber: int, clientAnswer:

string, answerIsCorrect: boolean, timeTakenToAnswerQuestion: int, correctAnswer: string)

Detail View: Historian Class Diagram

Page 6: Preliminary Object-Oriented Design Clickermatic Software Clicker

Historian.Record

- questionNumber: int- clientAnswer: Answer- answerIsCorrect: boolean- timeTakenToAnswerQuestion: int- correctAnswer: Answer

Detail View: Historian.Record Class Diagram

Page 7: Preliminary Object-Oriented Design Clickermatic Software Clicker

Detail View: Connection State Diagram

Connecting ConnectedNot

Connected

Connection receives user’s name and

server’s IP address

connection attempt fails (for example,

times out)

connection ends

Connection sends or receives data

server forms TCP connection with

Connection

Page 8: Preliminary Object-Oriented Design Clickermatic Software Clicker

ConnectionManager

- networkInterface: NetworkInterface- protocol: Protocol- serverIPAddress: string- serverPortNumber: int

+ logIn(name: string): void+ sendAnswerChoice(questionNumber: int, answer: string)+ close(): boolean+ isOpen(): boolean

Detail View: ConnectionManager Class Diagram

Page 9: Preliminary Object-Oriented Design Clickermatic Software Clicker

NetworkInterface

Attributes are implementation-dependent.

+ openConnection(name: String, address: string, portNumber: int): void

+ sendBytes(bytesToSend: byte[]): void+ closeConnection(): void+ connectionIsOpen(): boolean

Detail View: NetworkInterface Class Diagram

Page 10: Preliminary Object-Oriented Design Clickermatic Software Clicker

Protocol <<interface>>

+ toNetworkBytes(questionNumber: int, answer: string): byte[]+ getQuestionNumberFromNetworkBytes(bytes: byte[]): int+ getQuestionTypeFromNetworkBytes(bytes: byte[]): int+ getAnswerChoicesFromNetworkBytes(bytes: byte[]): list<string>+ getTimeLimitFromNetworkBytes(bytes: byte[]): int

Detail View: Protocol Class Diagram

Page 11: Preliminary Object-Oriented Design Clickermatic Software Clicker

DefaultProtocol

+ toNetworkBytes(questionNumber: int, answer: string): byte[]+ getQuestionNumberFromNetworkBytes(bytes: byte[]): int+ getQuestionTypeFromNetworkBytes(bytes: byte[]): int+ getAnswerChoicesFromNetworkBytes(bytes: byte[]): list<string>+ getTimeLimitFromNetworkBytes(bytes: byte[]): int

Detail View: DefaultProtocol Class Diagram

Page 12: Preliminary Object-Oriented Design Clickermatic Software Clicker

Detail View: Timer State Diagram

Counting Down

ExpiredNot

Running

time limit set

timer started

countdown stopped

timer reset

time = zero

Page 13: Preliminary Object-Oriented Design Clickermatic Software Clicker

Timer

- time: int- running: boolean- timerListeners: set<TimerListener>

+ expired(): boolean+ addTimerListener(newListener: TimerListener): void+ updateTimerListeners(): void

Detail View: Timer Class Diagram

Page 14: Preliminary Object-Oriented Design Clickermatic Software Clicker

TimerListener <<interface>>

+ setTimeRemaining(time: int): void

Detail View: TimerListener Class Diagram

Page 15: Preliminary Object-Oriented Design Clickermatic Software Clicker

ConnectionManager

Get Answer Choice for Question

Detail View: ClientController Inter-Class Use-Case Diagram

Timer

Update Time Remaining

UserInterface

Inform of Answer Choice

Update User Interface

UserInterface

Log In

ConnectionManagerSubmit Answer

Choice

Page 16: Preliminary Object-Oriented Design Clickermatic Software Clicker

ClientController

- connection: Connection- userInterface: UserInterface- timer: Timer- inTallyMode: boolean- currentQuestion: Question

+ askQuestion(question: Question): void+ setTimeRemaining(time: int): void+ submitAnswerChoice(string): void+ main(args: string[]): void

Detail View: ClientController Class Diagram

Page 17: Preliminary Object-Oriented Design Clickermatic Software Clicker

UserInterface

- clientController: ClientController

Operations have yet to be determined. They will likely be only update-UI-with-data-from-the-ClientController operations.

Detail View: UserInterface Class Diagram

Page 18: Preliminary Object-Oriented Design Clickermatic Software Clicker

Server Software

Page 19: Preliminary Object-Oriented Design Clickermatic Software Clicker

Summary View of Server Architectural Design

0..500Controller

Timer

UserInterface

QuestionSet

Question

Connection

Protocol

Server

Statistics

SetStatistics

ConnectionHandler1 1

1

QuestionHandler1

1

1

1

1

1

0..n

1

1

1

1

1

1

1

1

1

Page 20: Preliminary Object-Oriented Design Clickermatic Software Clicker

Server

- main()

Detail View: Question Class Diagram

Page 21: Preliminary Object-Oriented Design Clickermatic Software Clicker

Controller

- connection: Connection- userInterface: UserInterface- timer: Timer- questionSet: QuestionSet

-establishConnections();-loadQuestions();

Detail View: Controller Class Diagram

Page 22: Preliminary Object-Oriented Design Clickermatic Software Clicker

QuestionSet

-questions[] Question

Detail View: QuestionSet Class Diagram

Page 23: Preliminary Object-Oriented Design Clickermatic Software Clicker

UserInterface

-questions[] Question

-getInstanceOf-displayIntroScreen-displayX-displayY-update

Detail View: UserInterface Class Diagram

Page 24: Preliminary Object-Oriented Design Clickermatic Software Clicker

UserInterface

-runningTotal

Detail View: Statistics Class Diagram

Page 25: Preliminary Object-Oriented Design Clickermatic Software Clicker

Detail View: Controller State Diagram

Determining Detials

Showing Question

Waiting forQuestion Set

User load’s a Question Set

User or Timer requests a switch to a different Question (aka: Question ends)

User starts server

Editing Question Set

User opens Question Editor

User exits Question Editor

User closes serverUser closes current Question Set

Question Set Ends With Set Statistic Disabled

Showing Set Statistics

Question Set Ends With Set Statistic Enabled

User exits set statisticsController called by

main()

User exits Server

Program

Question ends with Question

Statistic Enabled

Showing Question and

Statistics

User Exits Statistics (and it is not a Poll)

User starts a Live Poll

User exits Live Poll

(Version 2)