BE Computer Engineering (IOE, TU) Object Oriented Analysis and Design (IOE, CT 651) Question Paper 2079 Nepal
This is the official BE Computer Engineering (IOE, TU) Object Oriented Analysis and Design (IOE, CT 651) question paper for 2079, as set in the regular annual examination. It carries 80 full marks and a time allowance of 180 minutes, across 13 questions. On Kekkei you can attempt this Object Oriented Analysis and Design (IOE, CT 651) past paper online with a timer, get instant AI feedback and step-by-step solutions, and track the topics where you lose marks — completely free. Whether you are revising for your BE Computer Engineering (IOE, TU) Object Oriented Analysis and Design (IOE, CT 651) exam or solving previous years' question papers, this 2079 paper is a great way to practise under real exam conditions.
Section A: Long Answer Questions
Attempt all / any as specified.
(a) Define object orientation and explain how it differs from the structured (procedural) approach to software development. (4)
(b) With suitable examples, explain the four fundamental principles of object orientation: abstraction, encapsulation, inheritance, and polymorphism. (8)
(a) Object Orientation vs. Structured (Procedural) Approach
Object orientation is a software development paradigm that organizes a system as a collection of interacting objects, where each object bundles together data (attributes) and the behaviour (methods) that operates on that data. The system is built by modelling real-world entities as classes/objects that collaborate by sending messages.
Difference from the structured/procedural approach:
| Aspect | Structured (Procedural) | Object-Oriented |
|---|---|---|
| Unit of decomposition | Functions/procedures | Classes/objects |
| Data & functions | Separated; data passed to functions | Encapsulated together in objects |
| Focus | What the program does (top-down functional decomposition) | The real-world entities and their interactions |
| Data access | Global/shared data, prone to side-effects | Hidden behind interfaces (information hiding) |
| Reuse & extension | Difficult; copy-paste | Inheritance, polymorphism, composition |
| Maintainability | Change in data structure ripples widely | Localized; better suited to large systems |
In short, procedural design centres on algorithms acting on passive data, whereas OO design centres on active objects that own their data, giving better modularity, reuse and maintainability.
(b) Four Fundamental Principles of Object Orientation
1. Abstraction — Representing the essential features of an entity while hiding unnecessary detail. We model only what is relevant to the problem.
Example: A Car class exposes start(), accelerate(), brake() to the driver but hides the internal combustion details. A bank Account is abstracted by balance, deposit(), withdraw().
2. Encapsulation — Bundling data and the methods that operate on it within a single unit (the object) and restricting direct access to the internal state (information hiding). Access is provided only through a well-defined public interface.
Example: In an Account class the balance attribute is declared private; clients can only change it via deposit()/withdraw(), which can enforce rules (e.g. balance must not go negative).
3. Inheritance — A mechanism by which a new class (subclass/derived class) acquires the attributes and behaviour of an existing class (superclass/base class), enabling reuse and an is-a hierarchy. The subclass may add or override features.
Example: SavingsAccount and CurrentAccount inherit from Account, reusing deposit()/withdraw() and adding their own behaviour (e.g. interest calculation).
4. Polymorphism — "Many forms": the ability of different objects to respond to the same message (method call) in their own specific way; the correct method is selected at run time (dynamic binding).
Example: Calling area() on a Shape reference invokes Circle.area(), Rectangle.area(), etc. depending on the actual object. A single for(Shape s : shapes) s.area(); works for every shape type.
Together these four principles allow systems that are modular, reusable, extensible and easy to maintain.
Consider a Library Management System in which members can search for books, borrow and return books, and reserve books that are currently issued. A librarian manages the catalogue and registers fines for overdue books.
(a) Draw a use case diagram for the system, clearly showing the actors, use cases, and the «include» and «extend» relationships where appropriate. (7)
(b) Identify the key domain classes, their attributes and operations, and draw a class diagram showing associations, multiplicities, and at least one aggregation/composition relationship. (7)
(a) Use Case Diagram — Library Management System
Actors: Member, Librarian. (Optionally a Catalogue/DB as a supporting actor.)
Use cases: Search Book, Borrow Book, Return Book, Reserve Book, Manage Catalogue, Register Fine, Login.
Relationships:
- Borrow Book
«include»Search Book (you must locate a book before borrowing) and«include»Login. - Return Book
«extend»Register Fine (a fine is charged only if the book is overdue — a conditional extension). - Reserve Book
«include»Search Book; reservation applies only when the book is currently issued.
Textual layout of the diagram:
____________ Library Management System ____________
| |
| (Login) <----«include»---- (Borrow Book) |
| ^ | |
Member --+------|------ (Search Book) <--«include» |
| ^ | |
| (Reserve Book) (Return Book) |
| | |
| «extend» v |
| (Register Fine) |
Librarian+----- (Manage Catalogue) (Register Fine) |
|________________________________________________ |
Memberis associated with Search Book, Borrow Book, Return Book, Reserve Book.Librarianis associated with Manage Catalogue and Register Fine.
(b) Class Diagram — Domain Model
Key domain classes, attributes and operations:
- Member —
memberId, name, address, finesDue;searchBook(), borrow(), returnBook(), reserve() - Librarian —
staffId, name;addBook(), removeBook(), registerFine() - Book (catalogue title) —
isbn, title, author, category;getDetails() - BookCopy (physical copy) —
copyId, status;markIssued(), markAvailable() - Loan —
loanId, issueDate, dueDate, returnDate;isOverdue(), calculateFine() - Reservation —
reservationId, date, status;cancel() - Fine —
fineId, amount, paid;pay()
Relationships & multiplicities:
Book "1" ◇——————< "1..*" BookCopy (composition: copies belong to a Book)
Member "1" ————————< "0..*" Loan
BookCopy "1" ———————< "0..*" Loan
Member "1" ————————< "0..*" Reservation
Book "1" ————————————< "0..*" Reservation
Loan "1" ◇——————— "0..1" Fine (aggregation: a fine arises from a loan)
Librarian "1" ——————< "0..*" Fine (registers)
- Composition (filled diamond):
Book ◆—— BookCopy— physical copies cannot exist without theirBooktitle; deleting the book deletes its copies. - Aggregation (hollow diamond):
Loan ◇—— Fine— a fine is associated with a loan but can exist/be tracked independently of it. - Multiplicities such as
1..*,0..*,0..1are shown at each association end.
This model captures borrowing (Loan), reservation, fining and the catalogue structure with proper associations, multiplicities and a composition/aggregation pair.
For an online ticket booking system, consider the use case "Book a ticket" in which a customer selects a show, the system checks seat availability, the customer makes a payment through a payment gateway, and a confirmed ticket is generated.
(a) Write the operation contract for the system operation makePayment(), clearly stating its pre-conditions and post-conditions. (4)
(b) Draw a sequence diagram for the "Book a ticket" scenario, showing the participating objects, messages, return values, and any loops or alternative fragments. (10)
(a) Operation Contract for makePayment(amount, cardDetails)
| Field | Description |
|---|---|
| Operation | makePayment(amount, cardDetails) |
| Cross-reference | Use case: Book a ticket |
| Pre-conditions | • A booking session exists with a selected show. • The required seats have been reserved/held and are still available. • The amount equals the total price of the selected seats. • The payment gateway is reachable. |
| Post-conditions | • A Payment object was created and associated with the booking (instance creation). • payment.status was set to Approved (attribute modification) after gateway authorization. • The held seats were marked Booked/Sold (state change). • A Ticket object was created and associated with the booking and the customer (instance creation + association formed). |
Post-conditions are stated as declarations about the state of the system after the operation completes (instance creation, attribute changes, associations formed/broken).
(b) Sequence Diagram — "Book a ticket"
Participating objects: :Customer (actor), :BookingUI, :BookingController, :ShowCatalog, :Show, :PaymentGateway, :Ticket.
Textual sequence (top-to-bottom messages with return values):
Customer -> BookingUI : selectShow(showId)
BookingUI -> BookingController : requestSeats(showId)
BookingController -> ShowCatalog : getShow(showId)
ShowCatalog --> BookingController : show
BookingController -> Show : checkAvailability(seats)
Show --> BookingController : availableSeats
alt [seats available]
BookingController -> Show : holdSeats(seats)
Customer -> BookingUI : makePayment(amount, card)
BookingUI -> BookingController : makePayment(amount, card)
BookingController -> PaymentGateway : authorize(amount, card)
PaymentGateway --> BookingController : authCode
opt [payment approved]
BookingController -> Show : confirmSeats(seats)
BookingController -> Ticket : <<create>> (show, seats, customer)
Ticket --> BookingController : ticket
BookingController --> BookingUI : confirmedTicket
BookingUI --> Customer : show ticket
end
else [no seats]
BookingController --> BookingUI : seatsUnavailable
BookingUI --> Customer : error message
end
Notes on notation used:
- Solid arrows = synchronous messages; dashed arrows (
-->) = return values. altfragment handles the seat-available vs. unavailable alternatives.optfragment handles the conditional payment-approved path.- A
loopfragment could wrapcheckAvailability/seat selection if the customer retries. <<create>>denotes instance creation of theTicketobject.
Lifelines are drawn vertically with activation bars during each call, messages flow left-to-right in time order from top to bottom.
(a) What is a design pattern? Explain the three categories of GoF design patterns (creational, structural, behavioural) with one example pattern from each category. (6)
(b) Explain the Observer pattern. Draw its class/structure diagram and describe a real-world scenario where it is the most appropriate design choice. (6)
(a) Design Patterns and the GoF Categories
A design pattern is a general, reusable, named solution to a commonly occurring design problem within a given context. It is not finished code but a template/description of how to solve a problem that can be applied in many situations, capturing proven design experience. The Gang of Four (GoF) catalogued 23 such patterns in three categories:
1. Creational patterns — deal with object creation mechanisms, making a system independent of how its objects are created and represented. Example: Singleton (ensures a single instance) or Factory Method (defers instantiation to subclasses).
2. Structural patterns — deal with the composition of classes and objects to form larger structures while keeping them flexible and efficient. Example: Adapter (makes incompatible interfaces work together) or Decorator (adds responsibilities dynamically).
3. Behavioural patterns — deal with communication, responsibility and interaction between objects. Example: Observer (one-to-many notification) or Strategy (interchangeable algorithms).
(b) Observer Pattern
Intent: Define a one-to-many dependency between objects so that when one object (the Subject) changes state, all its dependents (Observers) are notified and updated automatically. It promotes loose coupling between the subject and its observers.
Structure (class diagram in text):
+------------------+ +------------------+
| Subject |<>----------->| Observer | (interface)
+------------------+ observers +------------------+
| attach(o) | 0..* | update() |
| detach(o) | +------------------+
| notify() | ^
+------------------+ | implements
^ +------------------+
| extends | ConcreteObserver |
+------------------+ +------------------+
| ConcreteSubject | | update() |
| getState() | subject | observerState |
| setState() |<-------------| |
+------------------+ +------------------+
Subjectkeeps a list ofObservers and providesattach(),detach(),notify().- On a state change,
ConcreteSubjectcallsnotify(), which callsupdate()on every registeredObserver.
Real-world scenario: A stock-market / weather dashboard where many display widgets (graph, table, mobile alert) must update whenever the underlying data changes. The data source is the Subject; each widget is an Observer that registers itself. This is also used in GUI event handling, the publish–subscribe model, and the Model-View-Controller pattern (Views observe the Model). It is the best choice precisely when multiple objects must stay consistent with one source of truth without tightly coupling the source to its consumers.
Section B: Short Answer Questions
Attempt all / any as specified.
Differentiate between association, aggregation, and composition relationships in a class diagram. Illustrate each with a suitable example and the corresponding UML notation.
Association vs. Aggregation vs. Composition
All three model a structural relationship between classes; they differ in ownership strength and lifetime dependency.
| Relationship | Meaning | Ownership / Lifetime | UML Notation |
|---|---|---|---|
| Association | A general "uses/knows" relationship between two independent objects. | No ownership; objects have independent lifetimes. | A plain solid line (optionally with arrow, role names, multiplicities). |
| Aggregation | A "whole–part" / has-a relationship, but parts can exist on their own (shared, weak ownership). | Whole does not own the part's lifetime; deleting the whole does not delete the part. | Solid line with a hollow (empty) diamond at the whole end. |
| Composition | A strong "whole–part" relationship; parts cannot exist without the whole (exclusive ownership). | The whole owns the part's lifetime; deleting the whole deletes its parts. | Solid line with a filled (black) diamond at the whole end. |
Examples:
- Association:
Student —— Course(a student takes courses; both exist independently). Notation:Student ──── Course. - Aggregation:
Department ◇—— Professor(a department has professors, but a professor still exists if the department is dissolved; professors may belong to several departments). - Composition:
House ◆—— Room(rooms cannot exist without the house; destroying the house destroys its rooms). Another classic:Order ◆—— OrderLine.
Key memory aid: Association = knows-a; Aggregation = has-a (weak, shared); Composition = owns-a / part-of (strong, exclusive lifetime).
List the different categories of UML diagrams (structural and behavioural). Briefly explain the purpose of any three behavioural diagrams.
Categories of UML Diagrams
UML 2.x defines 14 diagram types in two broad groups:
A. Structural diagrams (show the static structure):
- Class diagram
- Object diagram
- Component diagram
- Deployment diagram
- Package diagram
- Composite structure diagram
- Profile diagram
B. Behavioural diagrams (show dynamic behaviour over time):
- Use case diagram
- Sequence diagram
- Communication (collaboration) diagram
- Activity diagram
- State machine (statechart) diagram
- Timing diagram
- Interaction overview diagram
(Sequence, communication, timing and interaction-overview are sub-types of interaction diagrams.)
Purpose of Three Behavioural Diagrams
1. Use Case Diagram — Captures the functional requirements of a system by showing actors (external users/systems) and the use cases (services) they interact with, plus «include»/«extend» relationships. It defines what the system does from the user's viewpoint.
2. Sequence Diagram — Shows how objects interact over time through an ordered exchange of messages along vertical lifelines. It emphasises the time ordering of messages for a particular scenario and is useful for designing the realization of a use case.
3. Activity Diagram — Models the flow of control/work through a process or algorithm, showing actions, decisions (branches), and concurrency via fork/join nodes. It is ideal for describing business processes and workflows, similar to a flowchart with support for parallelism.
Distinguish between a state (statechart) diagram and an activity diagram. Draw a state diagram for an Order object that goes through the states: created, paid, shipped, delivered, and cancelled.
State Diagram vs. Activity Diagram
| Aspect | State (Statechart) Diagram | Activity Diagram |
|---|---|---|
| Focus | The states of a single object and transitions triggered by events. | The flow of control/activities through a process or algorithm. |
| Nodes represent | States (conditions the object is in). | Actions/activities (steps of work). |
| Triggers | Events with guard conditions cause transitions. | Completion of one action triggers the next. |
| Concurrency | Modelled via orthogonal (concurrent) regions. | Modelled via fork/join nodes. |
| Typical use | Lifecycle of one reactive object (e.g. an Order, Connection). | Business processes, workflows, use-case realization across objects. |
| Analogy | An event-driven finite state machine. | An enhanced flowchart. |
In short: a state diagram answers "what states can this object be in and what events move it between them?", while an activity diagram answers "what is the sequence and coordination of steps in this process?"
State Diagram for an Order Object
● (initial)
|
v
[Created] --pay()--> [Paid] --ship()--> [Shipped] --deliver()--> [Delivered] --> ◉ (final)
| |
| cancel() | cancel()
v v
[Cancelled] <----------+
|
v
◉ (final)
Description:
- Initial pseudostate → Created (order placed).
pay()event: Created → Paid.ship()event: Paid → Shipped.deliver()event: Shipped → Delivered → final state.cancel()event: from Created or Paid → Cancelled → final state (an order can no longer be cancelled once shipped/delivered).
Each arrow is labelled with the triggering event; guard conditions (e.g. [stock available]) can be added in brackets where needed.
What is a collaboration (communication) diagram? How does it differ from a sequence diagram? Draw a collaboration diagram for a simple withdraw cash from ATM interaction.
Collaboration (Communication) Diagram
A collaboration diagram (called a communication diagram in UML 2) is an interaction diagram that shows the objects participating in an interaction and the links (messages) exchanged between them, emphasising the structural organization of objects rather than time. Messages are numbered to indicate their sequence.
Difference from a Sequence Diagram
| Feature | Sequence Diagram | Collaboration/Communication Diagram |
|---|---|---|
| Emphasis | Time ordering of messages | Structural organization / object links |
| Time | Shown explicitly by vertical position (top→bottom) | Implied only by message numbering (1, 2, 2.1 …) |
| Layout | Lifelines with activation bars | Objects connected by links (graph-like) |
| Best for | Showing the exact order of complex interactions | Showing which objects collaborate and how they are connected |
Both are semantically equivalent (one can be derived from the other) but highlight different aspects of the same interaction.
Collaboration Diagram — "Withdraw Cash from ATM"
1: insertCard / enterPin
:Customer ───────────────────────────► :ATM
│ 2: validate(pin)
▼
:BankServer
│ 3: checkBalance(amount)
▼
:Account
Numbered messages:
1 : Customer -> :ATM : requestWithdrawal(amount)
2 : :ATM -> :BankServer : validate(card, pin)
2.1: :BankServer --> :ATM : ok
3 : :ATM -> :Account : debit(amount)
3.1: :Account --> :ATM : newBalance
4 : :ATM -> :Customer : dispenseCash(amount)
Here the objects :Customer, :ATM, :BankServer and :Account are linked, and the numbered messages (1, 2, 2.1, 3, 3.1, 4) convey the sequence of the withdraw interaction. The ATM validates the PIN, debits the account, and dispenses the cash.
State and explain any three of the SOLID principles of object-oriented design, giving a short example of a violation and its fix for each.
Three SOLID Principles (with violation & fix)
SOLID is a set of five OO design principles (Single-responsibility, Open-closed, Liskov-substitution, Interface-segregation, Dependency-inversion) that promote maintainable, flexible designs. Any three:
1. Single Responsibility Principle (SRP)
A class should have only one reason to change — i.e. one responsibility.
- Violation: A
Reportclass that both generates report data and prints/saves it to a file (two reasons to change). - Fix: Split into
Report(holds/produces data) andReportPrinter/ReportRepository(handles output/persistence).
2. Open–Closed Principle (OCP)
Software entities should be open for extension but closed for modification. Add new behaviour without editing existing tested code.
- Violation: A
Shape.area()method with a bigif (type == circle) … else if (type == square) …that must be edited every time a new shape is added. - Fix: Make
Shapean abstract class/interface with anarea()method and let each new shape (Circle,Square) override it. New shapes are added by extension only.
3. Liskov Substitution Principle (LSP)
Objects of a subclass must be usable wherever objects of the superclass are expected, without breaking correctness.
- Violation:
Square extends RectanglewheresetWidth()also forces height to change, breaking code that assumes width and height are independent (e.g. a test expectingarea = w*h). - Fix: Don't force the inheritance; model
SquareandRectangleas separate types implementing a commonShapeinterface, so substitution never breaks invariants.
(Other principles: ISP — prefer many small client-specific interfaces over one fat interface; DIP — depend on abstractions, not concrete classes.)
Define the terms actor, use case, scenario, and use case extension. Explain the difference between the «include» and «extend» relationships in use case modeling.
Definitions
Actor — An external entity (a human role, another system, or a device) that interacts with the system and lies outside its boundary. An actor plays a role and exchanges information with the system, e.g. Member, Administrator, Payment Gateway.
Use Case — A description of a complete, valuable unit of functionality that the system provides to one or more actors to achieve a goal, e.g. "Withdraw Cash", "Place Order". It represents what the system does, not how.
Scenario — A specific single sequence of steps/instance of executing a use case. A use case has one main success scenario (the normal flow) plus several alternative/exception scenarios (e.g. "payment declined"). It is one concrete path through the use case.
Use Case Extension — An optional or conditional behaviour, captured as a separate (extending) use case that adds steps to a base use case at a defined extension point, only under certain conditions, via the «extend» relationship.
«include» vs. «extend»
| Aspect | «include» | «extend» |
|---|---|---|
| Meaning | Base use case always uses the included use case (mandatory, reusable common behaviour). | Extending use case conditionally adds behaviour to the base at an extension point. |
| Direction of arrow | From base → included use case. | From extending → base use case. |
| When executed | Every time the base runs. | Only when the condition at the extension point holds. |
| Purpose | Factor out shared/common steps. | Model optional, exceptional or alternative behaviour. |
| Example | Withdraw Cash «include» Validate PIN. | Return Book «extend» Pay Fine (only if overdue). |
Draw an activity diagram for the process of user registration with email verification, in which the system validates input, sends a verification email, and activates the account only after the user clicks the verification link. Show the use of fork/join and decision nodes where appropriate.
Activity Diagram — User Registration with Email Verification
Textual description of the activity flow (drawn as an activity diagram with rounded-rectangle actions, a diamond for decisions, and a thick bar for fork/join):
● (start)
|
v
[Enter registration details]
|
v
[Validate input]
|
v
< Input valid? >----No----> [Show error message] ---> (back to Enter details)
| Yes
v
========== FORK ========== (do two things in parallel)
| |
v v
[Create inactive account] [Send verification email]
| |
========== JOIN ==========
|
v
[Wait for user to click verification link]
|
v
< Link clicked within time limit? >
| |
| Yes | No (timeout)
v v
[Activate account] [Delete/expire pending account]
| |
v v
[Show "Registration complete"] [Show "Verification expired"]
| |
+-----------+-------------+
|
v
◉ (end)
Explanation of notation used:
- Initial node (●) starts the flow; activity final (◉) ends it.
- Decision node
< Input valid? >(diamond) branches on a guard; an invalid input loops back, modelling re-entry. - A fork (horizontal bar) splits the flow so that creating the inactive account and sending the verification email happen concurrently; a matching join synchronizes them before waiting for the click.
- A second decision node checks whether the user clicked the link in time, activating the account on success or expiring the pending account on timeout.
- Merge before the final node combines the alternative paths.
Explain the Singleton design pattern. Why is it used, what problems can it cause, and write a code skeleton (in any OO language) that ensures only a single instance is created.
Singleton Design Pattern
Definition: Singleton is a creational design pattern that ensures a class has exactly one instance and provides a global point of access to that instance.
Why it is used:
- When exactly one object must coordinate actions across the system, e.g. a configuration manager, logging service, connection/thread pool, cache, or device driver.
- To provide controlled, global access to that single shared resource while preventing multiple conflicting instances.
Problems it can cause:
- Acts as a global state, introducing hidden dependencies and tight coupling that make code hard to unit-test and mock.
- Can hinder concurrency (needs thread-safe lazy initialization) and complicate dependency management; often considered an anti-pattern when overused. It also violates the Single Responsibility Principle (manages both its own lifecycle and its business logic).
Code skeleton (thread-safe lazy Singleton, Java-style):
public final class Singleton {
// 1. Private static instance, lazily created
private static volatile Singleton instance;
// 2. Private constructor prevents external instantiation
private Singleton() {
// initialization
}
// 3. Global access point with double-checked locking
public static Singleton getInstance() {
if (instance == null) { // first check (no lock)
synchronized (Singleton.class) {
if (instance == null) { // second check (with lock)
instance = new Singleton();
}
}
}
return instance;
}
public void doWork() { /* ... */ }
}
Key elements: a private constructor (so no one else can new it), a private static reference to the single instance, and a public static getInstance() that creates the instance once and returns the same object thereafter. (An even simpler thread-safe form initializes the field eagerly: private static final Singleton instance = new Singleton();.)
Write short notes on any two of the following:
(a) Coupling and cohesion
(b) Polymorphism and dynamic binding
(c) Stereotypes in UML
Short Notes (any two)
(a) Coupling and Cohesion
- Coupling is the degree of interdependence between modules/classes. Low (loose) coupling is desirable because modules can change independently, improving maintainability and reuse. High coupling makes one change ripple across many classes.
- Cohesion is the degree to which the elements within a single module belong together and serve a single, well-focused purpose. High cohesion is desirable (one class = one clear responsibility).
- Goal of good OO design: low coupling and high cohesion (supported by the GRASP principles).
(b) Polymorphism and Dynamic Binding
- Polymorphism ("many forms") lets a single interface/message produce different behaviour depending on the actual object type. Example: calling
draw()on aShapereference draws a circle or rectangle according to the real object. - Dynamic (late) binding is the mechanism that makes run-time polymorphism work: the actual method to invoke is resolved at run time based on the object's true class, not at compile time (static binding). Overridden methods are dispatched via dynamic binding, enabling extensible, substitutable designs.
(c) Stereotypes in UML
- A stereotype is a UML extensibility mechanism that lets you define a new kind of model element based on an existing one, giving it specialized meaning. It is written in guillemets, e.g.
«interface»,«include»,«extend»,«entity»,«boundary»,«control». - Stereotypes (along with tagged values and constraints) form UML profiles, allowing UML to be tailored to a particular domain or technology without changing the core metamodel.
Frequently asked questions
- Where can I find the BE Computer Engineering (IOE, TU) Object Oriented Analysis and Design (IOE, CT 651) question paper 2079?
- The full BE Computer Engineering (IOE, TU) Object Oriented Analysis and Design (IOE, CT 651) 2079 (regular) question paper is available free on Kekkei. You can read every question online and attempt the paper under timed exam conditions.
- Does the Object Oriented Analysis and Design (IOE, CT 651) 2079 paper come with solutions?
- Yes. Every question on this Object Oriented Analysis and Design (IOE, CT 651) past paper includes a step-by-step solution, plus instant AI feedback when you attempt it on Kekkei.
- How many marks is the BE Computer Engineering (IOE, TU) Object Oriented Analysis and Design (IOE, CT 651) 2079 paper?
- The BE Computer Engineering (IOE, TU) Object Oriented Analysis and Design (IOE, CT 651) 2079 paper carries 80 full marks and is meant to be completed in 180 minutes, across 13 questions.
- Is practising this Object Oriented Analysis and Design (IOE, CT 651) past paper free?
- Yes — reading and attempting this Object Oriented Analysis and Design (IOE, CT 651) past paper on Kekkei is completely free.