Assignment 1 2026
Unique number:
Due Date: 2026
This document includes:
Helpful answers and guidelines
Detailed explanations and/ or calculations
References
Connect with the tutor on
+27 81 278 3372
, QUESTION 1
// main.cpp (Qt Console Application)
//
// qmake:
// QT += core
// CONFIG += console c++17
//
// What this includes (Question 1):
// - Vehicle base class: model + year (validated) + defaults
// - PassengerVehicle: passengerCount
// - TransportVehicle: capacityKg
// - Getters + setters
// - details() function to output vehicle details (polymorphic)
// - VehicleList uses Qt parent-child ownership for the vehicles
// - main() creates vehicles (incl. one default ctor), adds to list, prints
to console
#include <QCoreApplication>
#include <QDate>
#include <QList>
#include <QTextStream>
// ---------------------------
// Vehicle (base class)
// ---------------------------
class Vehicle : public QObject
{
public:
explicit Vehicle(QObject* parent = nullptr)
: QObject(parent)
, m_model(defaultModel())
, m_year(defaultYear())
{}
Vehicle(const QString& model, int year, QObject* parent = nullptr)
: QObject(parent)
{
setModel(model);
setYear(year);
}
virtual ~Vehicle() = default;
// Getters
QString model() const { return m_model; }
int year() const { return m_year; }
// Setters (validated)
void setModel(const QString& model)
{
const QString trimmed = model.trimmed();
m_model = trimmed.isEmpty() ? defaultModel() : trimmed;
}
void setYear(int year)
{
m_year = isReasonableYear(year) ? year : defaultYear();
}
© Study Shack 2026. All rights Reserved +27 81 278 3372
, // Output function
virtual QString details() const
{
return QString("Type=Vehicle, Model=%1,
Year=%2").arg(m_model).arg(m_year);
}
protected:
static QString defaultModel() { return "Unknown Model"; }
static int defaultYear()
{
return QDate::currentDate().year();
}
static bool isReasonableYear(int y)
{
const int current = QDate::currentDate().year();
return (y >= 1886 && y <= current + 1);
}
private:
QString m_model;
int m_year;
};
// ---------------------------
// PassengerVehicle
// ---------------------------
class PassengerVehicle : public Vehicle
{
public:
explicit PassengerVehicle(QObject* parent = nullptr)
: Vehicle(parent)
, m_passengers(defaultPassengers())
{}
PassengerVehicle(const QString& model, int year, int passengers,
QObject* parent = nullptr)
: Vehicle(model, year, parent)
{
setPassengerCount(passengers);
}
int passengerCount() const { return m_passengers; }
void setPassengerCount(int count)
{
m_passengers = (count >= 1 && count <= 15) ? count :
defaultPassengers();
}
QString details() const override
{
return QString("Type=PassengerVehicle, Model=%1, Year=%2,
Passengers=%3")
.arg(model())
.arg(year())
.arg(m_passengers);
}
© Study Shack 2026. All rights Reserved +27 81 278 3372