Guilherme H. Travassos - cs.umd.edumvz/mswe607-f00/notes-5b1.pdf · Guilherme H. Travassos ght UMCP...

25
1 CMSC 735 A Quantitative Approach to Software Management and Engineering UFRJ COPPE Brazil Guilherme H. Travassos http://www.cos.ufrj.br/~ght UMCP - CS ESEG Models and Measures (Product) UMCP - CS ESEG UFRJ/COPPE CAPES - Brazil Outline y INTRODUCTION x Products Measurement y Part I: OO MODELS x Object-Oriented Paradigm x Engineering Object-Oriented Software x Representing OO Software Products using UML High-Level Design Low-Level Design y Part II: OO MEASURES x Object-Oriented Software Measurement High level design Low level design Coding Testing

Transcript of Guilherme H. Travassos - cs.umd.edumvz/mswe607-f00/notes-5b1.pdf · Guilherme H. Travassos ght UMCP...

1

CMSC 735A Quantitative Approach to SoftwareManagement and Engineering

UFRJCOPPEBrazil

Guilherme H. Travassoshttp://www.cos.ufrj.br/~ght

UMCP - CSESEG

Models and Measures (Product)

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Outline

y INTRODUCTIONx Products Measurement

y Part I: OO MODELSx Object-Oriented Paradigmx Engineering Object-Oriented Softwarex Representing OO Software Products using UML

• High-Level Design• Low-Level Design

y Part II: OO MEASURESx Object-Oriented Software Measurement

• High level design• Low level design• Coding• Testing

2

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

y INTRODUCTIONx Products Measurement

CMSC 735A Quantitative Approach to SoftwareManagement and Engineering

Models and Measures (Product)

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Products Measurement

y Metrics for any engineered product are governed by the uniquecharacteristics of the product

y As for conventional software, OO metrics aim to:x better understand the quality of the productx assess the effectiveness of the processx improve the quality of work performed

What makes an OO product different from a conventional one?How do we measure the quality of an OO system?What characteristics of the design model can be assessed to determine

whether the system will be easy to implement, amenable to test,simple to modify, and most important, acceptable to end users?

3

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Engineering Conventional Products

y the solution is function or data centeredy it uses algorithms, procedures (with different notations

across the life-cycle) and data organization to describe theproblem and organize information

y basically, modules arrange the software architecturey information structuring technology (relational model, for instance)

determines how the information will be stored and evaluated

Products Measurement

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Products Measurement

Engineering Conventional Systems:y functional decomposition (structured development) and some possible

metricsa

b c d

e f

1

23

Program ado while Xcall b;call c;call dend while;

Subroutine ccall e;if y then call fend;

Specification Design ImplementationFunction Pointspages of documentationestimated lines of codecalendar time...

CohesionCouplingComplexityNumber of Modules...

Cyclomatic complexityHalstead’s theorylines of codeData bindingsSpan...

Testing

CoverageReliability...

4

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Products Measurement

Object Oriented Paradigm:

y means to organize the software as a collection of discreteobjects that incorporate both data structure and behavior

y characteristics:

identityabstractionclassificationencapsulation

inheritancepolymorphismpersistence

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

y Part I: OO MODELSx Object-Oriented Paradigmx Engineering Object-Oriented Softwarex Representing OO Software Products using UML

• High-Level Design• Low-Level Design

CMSC 735A Quantitative Approach to SoftwareManagement and Engineering

Models and Measures (Product)

5

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Identitydata is organized intodiscrete, distinguishableentities called objects

an object has states andbehaviors. A reference(handle) distinguishesdifferent objects

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Abstraction

How many viewpoints(perspectives)can be used while building asystem?

Abstractions form a hierarchy!

6

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Classification

an important OOdevelopment activity

depends on the abstractionlevel and the viewpoint(perspective)used by the developer

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Classification

Objects with the samefeatures (attributes andbehaviors) are grouped into aclass

Each class defines apossibly infinite setof objects

7

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Classification

Bicycle objects

Bicycle classAttributes

frame sizewheel sizegearsmaterial

Operationsshiftmoverepair

abstract

into

Polygon objects

abstract

into

Polygon classAttributes

verticesborder colorfill color

Operationsdrawerasemove

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Classification Each object is said to be an instance of a class

Each object knows its class

Each instance keeps its ownattributes value (state) butshares attribute names andbehaviors (operations) withother instances of the class

8

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Encapsulation

a class encapsulates attributes(names,types) and behaviors,hiding the object implementationdetails

Bicycle

frame sizewheel sizegearsmaterial

shift()move()repair()

102iron

66

plastic

8

paper

21

0

6 0

Polygon

verticesborder colorfill color

draw()erase()move()

3yellow

red

4green

blue

4white

black

id

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Inheritance

the sharing of attributes andbehaviors among classes basedupon a hierarchical relationship

A class can be defined broadly andthen refined (specialized) intosuccessively finer subclasses

Each subclass incorporates or inherits all theproperties of its superclass(es) and its ownspecialized properties

9

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Structure identification:

class hierarchy using single inheritance

Person

nameage

DoctorOffice

attend_patient()

Nursehospital

Surgeonspecialty

Family Doctorhome address

Surgeonnameageofficespecialty

attend_patient()

Family Doctornameageofficehome address

attend_patient()

Nursenameagehospital

Doctor

nameageoffice

attend_patient()

abstract class

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Polymorphism the same behavior may behavedifferently on different classes

a behavior (operation) is an actionor transformation that an objectperforms or is subject to.Normally, these actions are takenas response for some stimulus(message)

10

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Polymorphisma specific implementation of anoperation for a certain class iscalled a method

an operator may have morethan one methodimplementing it

an OOPL automatically elects the correct method to implement anoperation based on the name of the operation, carried data(parameters) and object’s class being implemented (methodsignature)

therefore, new classes can be added without changing existing codeDoctor

nameageoffice

attend_patient()

Surgeonnameageofficespecialty

attend_patient()

Family Doctornameageofficehome address

attend_patient()

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Object-Oriented Paradigm

Persistence

the object state and its behaviorswill be saved across the time orspace

an object existencetranscends time and/or space

11

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Engineering Object-Oriented Software

OO Software Process Features:y works with the encapsulation of data and behavior into independent

units (objects)

y uses the same set of semantic constructs to represent the system fromthe requirements to the application

y supports different software life-cyclesy stimulates reuse

In general, it deals with (but not using a totally sequential approach):

y requirements description (textual description and scenarios)

y high-Level designy low-Level designy codingy testing

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Engineering Object-Oriented SoftwareHigh Level Design:

y Classes/Objects identificationx real world (problem domain) objects definitionx attributes and behaviors detailing

y Classes/Objects interaction identificationx association and aggregation relationshipsx probably some inheritance relationships

Low-Level Designy inserting computational features into the models (user interface, tasks,

persistence,…) and some class libraries details (uses a bottom-upapproach)

y good time to deal with non-functional requirements (performance,security, etc.)

y classes contract preparationy starting code

12

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Engineering Object-Oriented Software

Coding

y translates OO models to some OO programming languagey refines hierarchical structuresy in some situations, makes some generalization for future use

(components)

Testing

y unit testingy integration testingy system testingy acceptance testing

Classhierarchy

Class

Cluster

Subsystem

System

Unittesting

Systemtesting

Acceptancetesting

Integrationtesting

Abst

ract

ion

leve

l

Figure 1: O.O. Testing level

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Engineering Object-Oriented Software

Representations

y Static views:x objectsx attributesx behaviorx relationships: generalization, aggregation and inheritance

y Dynamic views :x communicationx control/temporizationx states

y Restrictions:x in the structure (attribute values, relationship cardinality )x in the dynamic behavior

13

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Representing OO Software Product usingUnified Modeling Language - UML

UML can be used to

x specify,x visualize, andx document

the design artifacts of a

system under development

UML is just a notationalapproach and does notpropose/define how toorganize tasks design.Therefore, it can betailored to fit differentdevelopment situationsand software lifecycles.

Dynamic ViewDynamic View y use casesy activitiesy interaction

x sequences

x collaborations

y state machines

Static ViewStatic Viewy classes

x Relationships• Association• Generalization• Dependency• Realization

x Extensibility• Constraints• Tagged values• Stereotypes

y packagesy deployment

UML DiagramsUML Diagrams

OO Design ArtifactsOO Design Artifacts

Actually, it has beenadopted by the OMG(Object Managementgroup) as the OOnotational standard

Restrictions and FormalizationRestrictions and Formalizationy OCL - Object Constraint

Language

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Representing OO Software Product usingUnified Modeling Language - UML

High and Low Level Design Coding and Testing

class partsinherit from Stock_items;attributes …services …..relationships ...

RequirementsDescription and Use Cases

…3 – A gas station ownercan use the system tocontrol inventory. Thesystem will either warnof low inventory orautomatically order newparts and gas.

...

Fixed_Rate Loan

risk()principal_remaining()

Variable_Rate Loanprincipal_remaining : number

risk()principal_remaing()

Lendername : tex ti d : t e x tcontact : textphone_number : number

Borrower

name : textid : numberrisk : numberstatus : text

risk()set_status_good()set_status_late()set_status_default()borrower_status()set_status()

Bundleact ive t ime period : dateprof i t : numberestimated risk : numbertotal : numberloan analyst : id_numberdiscount_rate : number

investor_name : textdate_sold : date

risk()calculate_profit()cos t ( )

Loan Arranger

rec_monthly_report()inv_request()generate reports()identify_report_format()verify_report()

look_for_a_lender()look_for_a_loan()identify_loan_by_criteria()manually_select_loans()optimize_bundle()calculate_new_bundle()identify_asked_report()aggregate_bundles()aggregate_loans()aggregate_borrowers()aggregate_lenders()format_report()show_report()

Loanamount : numberinterest rate : number

settlement data : datet e r m : d a t estatus : textoriginal_value : numberprincipal_original : number

risk()set_status_default()set_status_late()set_status_good()discount_rate()

borrowers()principal_remaining()

1

1..*

1

1..*

1..*1..*

1..*1..*

1..*

0 . .1

1..*

0 . .1

Good

Late

monthly report informing payment on time

[ payment time <= due time ]receive a monthly report

D e f a u l t

monthly report informing late payment[ payment time > due time + 10 ]

monthly report informing late payment

[ due time < payment time < due time + 10 ]

monthly report informing late payment[ payment t ime > due t ime + 10 ]

monthly report informing payment on time[ payment time <= due time ]

Loan State

Diagram

Fanny May : Loan Arranger

Bor rower : Borrower

A Lender :

Spec i f ied Lender

Loan : Loan

verify_report()

new_loan(lender, borrowers)

new_

look_for_a_lender(lender)

look_for_a_loan(loan)

look_for_a_

update_loan(lender, borrower)

update_

lender :

new_lender(name,contact, phone_number)

update(lender)

monthly_report(lender, loans, borrowers)

identify_report_format()

Receive Monthly Report

Loan Arranger Classes Description

Class name: Fixed_Rate Loan Category: Logical View Documentation: A fixed rate loan has the same interest rate over the entire term of the mortgage

External Documents: Export Control: Public Cardinality: n Hierarchy: Superclasses: L o a n Public Interface: Operations: risk principal_remaining

State machine: No Concurrency: Sequent ial Persistence: Persistent

Operation name: risk Public member of: Fixed_Rate Loan Return Class: f l o a t Documentation: take the average of the risks' sum of all borrowers related to this loan if the average risk is less than 1 round up to 1 else if the average risk is less than 100 round up to the nearest integer otherwise round down to 100 Concurrency: Sequential

14

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

UML Use Cases

y capture some participant-visible functiony can be used to represent system’s utilization contextsy show some of the system requirements using high abstraction

level

Diagram elements:x actor: is a role that a participating plays to the systemx use-case: shows the visible system functionalityx extensions: extends a use-casex uses: reuse of use-cases

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

The Gas Station Use-Cases

Owner

Customer

CC System

Gas ordering system

Controlling inventory

Parts ordering system

maintenance services

Parking servicesGas services

accounting services

billing

Printer system

15

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

UML Class diagramy captures problem vocabularyy relates everything togethery models information in a systemy anchors behavior to classesy generates class structure declarations

UML Relationshipsy association

x aggregation: is the part-of relationshipx composition: the whole

salesman 1..*1

ordered item

1

1..*Customer

ordersends

includeshas

name : stringaddress : stringbirthday : date

Customer

pay_by_cash()

1Class name

Attribute:Type = initial Value

operation(arg list):return type

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Partpart_code

pricediscount rate

min_quantity = 2current_quantity

gas ordering system

inventory

order_gas()order_part()

1..*

1

parts ordering system

car maintenanceprice = 150.00

price()

0..*

periodic messages

messagetext

CustomernameaddressSSNbirthday

account_number

warning letters

billissue datepayment date

price()taxes()

gasmin_quantity = 100current_quantity

1

1

refuelgallonsprice = 1.09

price()1

0..*

parking spotplace

is_available()

parkingprice = 5.00

1

0..1

servicesdiscount rate

price()

Purchasedatetax = 0.05

price()taxes()

1..*1

1

0..*

1..*

0..*

gas station

dormant_accounts()

CC system

0..*

1

0..1

1

0..*

11

11..*

1

0..*

1..*1

1..*

0..*

An example of a class diagram

16

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

A Class DescriptionClass name: refuel Category: Service External Documents: Export Control: Public Cardinality: n Hierarchy: Superclasses: services Associations: <no rolename> : gas in association <unnamed>

Public Interface: Operations: price Private Interface: Attributes: gallons price = 1.09 Implementation: Attributes: gallons price = 1.09 State machine: No Concurrency: Sequential Persistence: Transient

Operation name: price Public member of:refuel Documentation: // Calculates the final price of the fuel Preconditions: gallons > 0 Object diagram: (Unspecified) Semantics: final_price = gallons * price Object diagram: (Unspecified) Concurrency: Sequential

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

UML Package diagramsy used to break down a large system into smaller and meaningful sets of

classes (clusters)y shows the dependency among classes of different packages. A

dependency exists between two elements if changes to the definition of oneelement may cause changes to the other (coupling)

x Possible dependencies between two classes:• one class sends a message to another one• one class has another one as part of its data

• one class mentions another one to be a parameter to an operation

y packaging is a vital technique for large projects:x allows keeping system’s dependencies to a minimum reducing couplingx is particularly useful for testing

17

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

UML Package diagram

External Systems

Products

Customers

Service

Packaging GasStation classes

car maintenanceprice = 150.00

price()

refuelgallonsprice = 1.09

price()

servicesdiscount rate

price()

parking

price = 5.00

parking spotplace

is_available()

0..11

0..11

package

dependency

package contents

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

UML Interaction diagramy used to describe how a functionality can be obtained from the objectsy typically, one interaction diagram represents just one use-casey good to represent sequential functions, without much conditional or

looping controly two types of interaction diagrams:

x sequence diagramsx collaboration diagrams

18

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level DesignSequence diagrams

y an object is shown as a box at the top of a dashed vertical line (object’slifeline)

y an arrow between two objects lifelines is called a message (labeled atleast with the message name):

x self-delegation: a message that an object sends to itselfx condition: indicates when a message is sentx iteration marker: shows that a message is sent many times to multiple

receiver objects

y puts emphasis on the sequence of actions instead of the relationshipsbetween objects

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level DesignSequence diagram

Customer :Customer

Gas Station Owner :Gas Station Owner

Credit Card System :Credit_Card System

Purchase :Purchase

Customer Bill :Bill

Parking Spot :Parking_Spot

parking_spot_request( account_number)next_available( )

where_to_park( available parking_spot)

lease_parking_spot(parking_spot, payment time, payment type)

authorize_payment(customer, amount, date)

[ Payment type = Credit Card and payment time = now]

new_purchase(customer, parking_spot, date)

add_to_bill(customer, amount, date)

[ payment time = monthly]new_payment_type_request()

[ response time => 30 secs orcredit card not authorized andpayment time = now]

[response time < 30 secs]

services

19

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

Collaboration diagramsy objects are shown as iconsy arrows from the sender to receiver show the

messages senty a number indicates the message ordery emphasizes which objects are statically

connected

2: operation name(parameters list)

1: operation name(or an event)

:class name :class name

Object:class name

attributesattribute = value

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

GasStation

Parking Spot

Purchase

Parking

1: Parking() 3: parking_at(place)

2: next_available()

4: new_purchase(customer,parking,date, place)

5: new_parking(customer,place)

Customercollaborationdiagram

Gas StationParking use case

20

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

UML State diagramsy show possible object states, events that induce the transition from one

state to another and possible actions associated to these eventsy represent the dynamic model view of a simple object, object’s hierarchy

or the whole systemy Normally, are only prepared for classes whose instances are very

dynamic

object state ≡ attributes valueevents ≡ messages

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

UML State diagrams

y Notationx state:

• means cumulative results of theobject behavior/systemfunctionality

x transition (event):• some occurrence which can

induce an object/system statechange

authorizing

authorized

start

endstate

transition

state actions:actions can be associated to states

conditional transition:some transition will be occur if acondition can be satisfied

nesting states:states can be partitioned

Authorizing

Authorized

Purchased

Rejected

[payment not OK][payment ok]

[time <= 7]

21

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level Design

Gas Station states diagrams

available

not available

Customer_request

Customer release

parking spot

place : Strings

is_available()next_available()inventory

order_gas()order_part()

normal stockLow gas

Low parts

ordering parts

ordering gas

parts low in stock

gas low in stock

delivery gas delivery parts

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

High-Level DesignUML Activities diagram

y can be used to model procedures activity flowy an activity is similar to a statey an event is similar to an transitiony decisions can be represented if an activity has more than one eventy normally, are associated to states diagrams of several classes

activity A activity B

startInitial activity activity X end

transition

activity B

activity C activity D

decision output A

output B The bar shows that one activity canbroadcast data to other activities(parallels or not determined activities)

22

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Low-Level Design

y Advantages while using the same notation

x developers don’t need to learn/use different constructs andrepresentation

x analysis/design transition is an entwining and soft processx it improves reuse, extensibility and readabilityx the results from the High-level design compose the initial problem

domain design that should be modified and extended to satisfy allnon-functional requirements

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Low-Level Designx Problem domain design

• model modification:– early projects and coded classes reuse– adjusting supported inheritance level– performance and I/O issues– data management support– low level components– high level design extensions review

• Creating/Destroying Objects– defines how each concrete class may create its objects (instantiation)– describes how objects might be destroyed– it’s important to observe the restrictions applied to the class structure

to maintain model consistency• Inserting computational features: user interface, task and data

management• Decisions regarding deployment and physical software architecture

23

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Low-Level Design

y For instance,User interface design Bill

Customer name:

Issue Date:

PurchasesDate Type Amount

Ok

Total:

Windowsizewidthcustomer_nameissue_datetotalpurchases

show_bill()

Ok_buttonTextBox

billissue date : DateTimepayment date : DateTime

price()taxes()customer()list_purchases()

1..*

1

Purchasedate : DateTimetax : float = 0.05

price()taxes()

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Low-Level Design

UML Deployment diagramy show physical relationships among system’s software and hardware

componentsy useful to show components’ system distributiony basic notation:

x a diagram node means some computing unitx a node connection shows some communication possibility

x a component means a module (code)x components’ dependencies are the same as the packages’ dependencies

processor device

processor

connection

Package specification

Main program

task

24

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Low-Level Design

Gas StationComponents

Order Parts

Products

GasStation

Customers

Services

Interface with external systems

Gas Station Processor

Cardreader

modem

CC System

Gas Ordering System

Parts ordering System

Gas StationDeployment Diagrams

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Low-Level Designy Moving to code

x A bare classification of OO PL’s:• Pure:

– uses just OO constructs in its definition– enforces OO as the only approach to code

– uses dynamic binding all the time– good for prototyping

– normally, has tools to support OO coding, debugging andtesting

– Some examples.: SMALLTALK , EIFFEL, and JAVA

• Hybrid:– uses OO and non-OO constructs in its definition

– doesn’t enforce OO as the only approach to code– eventually, uses virtual functions to implement dynamic

binding

– tools supporting coding, debugging and testing do notadopt OO

– Some examples: C++, OO-COBOL, and OBJECT-PASCAL

25

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Low-Level Design

Movingto code

PL Smalltalk Eiffel Java C++ Object-Pascal

FeaturesBinding dynamic dynamic dynamic static

dynamicstatic

dynamicOverlay allows allows allows partially partiallyGarbageCollection

automatic usercontrol

automatic none none

Inheritance simple multiple simple multiple simpleLibraries yes yes yes no noProductivity high high high medium/low mediumEnvironment nice nice nice good goodTools OO OO OO traditional tradition

alLearning slow medium medium medium fastHardwaredependency

low high high high high

UserInterface

Selfwindows

WindowsXWindows

WindowsXWindows

--- ---

Enforces OO yes yes yes no no

Choosinga PL

UMCP - CSESEGUFRJ/COPPE

CAPES - Brazil

Low-Level Designclass parking : public Services{ public: // Constructors (generated) parking(); parking(const parking &right); //Destructor (generated) ~parking(); //Get and Set Operations for Associations (generated) const parking_spot * get_the_parking_spot () const; void set_the_parking_spot (parking_spot * value); protected: // Additional Protected Declarations private: //Get and Set Operations for Class Attributes (generated) const float get_price () const; void set_price (float value); // Additional Private Declarations private: // implementation // Data Members for Class Attributes float price; // Data Members for Associations parking_spot *the_parking_spot;};// Class parking

servicesdiscount rate : float = 0.0

price()

parkingprice : float = 5.00

10..1

parking spotplace : Strings

is_available()next_available()

Moving to code