Define the following terms in OO context.
- class
- object
- interface
- abstract
- concrete
- inheritence
- composition
- aggregation
Name three OO principles.
A local restaurant has suddenly burst in popularity and the servers are now regularly forgetting the details of orders. You need to design the software for a terminal which allows servers to keep track of which orders belong to which table and which customers made which orders. The bill should be possible to create automatically and all actions should be recorded to make end-of-the-month reports automatic.
Draw an example of each diagram. Examples don't need to exhaustively show the model's features.
- class model
- sequence diagram
- activity diagram
- state diagram
- component diagram
- deployment diagram
Draw a class model for your restaurant design.
Give a motivation, a description, and an example use for each of the following patterns.
- Decorator
- MVC
- Command
- Factory
- State
- Singleton
- Adapter
- Template Method
- Observer
Consider three patterns for use in your design, and evaluate if they are worth using.
Describe it.
What is the motivation?
Name three popular VCS software tools.
Give 2 examples of how it affected your development process.
Describe it.
What is the motivation?
Why is it important?
Prepare two fully dressed use cases for your restaurant computer system design.
Describe unit tests and coverage tests.
What is the motivation of testing?
Present 2 advantages vs 2 disadvantages.
Describe Right BICEP.
Describe CORRECT.
Describe 4 tests you could use on your restaurant system design based on Right BICEP and CORRECT.
Give a motivation for both of these methods.
Compare them. (pros & cons)
Name 3 challenges in programming concurrently.
What is the advantage of concurrency?
What is the name of the brilliant yet underrated programming paradigm that was devised to deal with concurrency elegantly? (Hint: starts with 'func' ends with 'tional')
Give a brief, theoretical advantage of functional programming for concurrency.
List 2 buzzwords that originate from aspect oriented programming.
Aspect Oriented Programming tries to solve a problem that doesn't exist by proposing a poor model. Describe this nonexistant problem.
What is an aspect?
What is a pointcut?
the last two parts are totally not biased whistle