Philadelphia University

Lecturer : Dr. Samer Hanna

Internal Examiner: Dr. Mourad Maouche

Coordinator: Dr. Samer Hanna

Software Construction

(0721420 ) Section 1 First Exam’s Key First Semester of 2014/2015

Date: Sunday, Nov. 30th, 2014------Time: 50 min.

Answer the following:

1. False because Construction focuses on coding and debugging but also includes some detailed design and unit testing (2 marks)

2.

§  Verifying that the groundwork has been laid so that construction can proceed successfully.

§  Designing and writing routines and modules

§  Creating data types and naming variables

§  Selecting control structures

§  Finding and fixing faults and errors

§  Reviewing other team members' low-level design and code and having them review yours

§  Polishing code by carefully formatting and commenting it

§  Integrating software components that have been built separately

§  Tuning code to make it smaller and faster

3.

Primitive datatype such as int, string, double,…

Class (complex or user-defined datatype)

Collections like Array, ArrayList, List, …

Collections of Class

Q2) (8 marks)

Consider the following class diagram:

package leisureProgram;

public class Tutor

{

private String id;

private String name;

private String desc;

public Tutor(String id, String name, String desc) {

this.id = id;

this.name = name;

this.desc = desc;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getDesc() {

return desc;

}

public void setDesc(String desc) {

this.desc = desc;

}

}

package leisureProgram;

import java.util.Date;

public class Program {

private String code;

private Date date;

private Tutor tutor;

public Program(String code, Date date, Tutor tutor) {

this.code = code;

this.date = date;

this.tutor = tutor;

}

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

public Tutor getTutor() {

return tutor;

}

public void setTutor(Tutor tutor) {

this.tutor = tutor;

}

}

package member;

import leisureProgram.*;

import leisureFacility.*;

import java.util.*;

public class Member

{

private String id;

private String name;

private String address;

private Program prog;

ArrayList<Transaction> trans = new ArrayList<Transaction>();

ArrayList<Booking> bookings = new ArrayList<Booking>();

public Member(String id, String name, String address, Program prog) {

this.id = id;

this.name = name;

this.address = address;

this.prog = prog;

}

public Member() {

this.id = " ";

this.name = " ";

this.address = " ";

this.prog = null;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public Program getProg() {

return prog;

}

public void setProg(Program prog) {

this.prog = prog;

}

public ArrayList<Transaction> getTrans() {

return trans;

}

public void setTrans(ArrayList<Transaction> trans) {

this.trans = trans;

}

public ArrayList<Booking> getBookings() {

return bookings;

}

public void setBookings(ArrayList<Booking> bookings) {

this.bookings = bookings;

}

public void printMemberInfor()

{

System.out.println("Member id: " + id + " Name: " + name + " Address: " + address);

}

}

package member;

public class Transaction

{

private String id;

private double fee;

public Transaction(String id, double fee) {

this.id = id;

this.fee = fee;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public double getFee() {

return fee;

}

public void setFee(double fee) {

this.fee = fee;

}

}

package member;

import java.util.Date;

import leisureProgram.*;

public class VIPMember extends Member

{

private Date upgradeDate;

private String upgradeNotes;

public VIPMember(String id1, String name1, String address1, Program prog1, Date date1, String notes)

{

super(id1, name1, address1, prog1);

upgradeDate= date1;

upgradeNotes= notes;

}

public Date getUpgradeDate() {

return upgradeDate;

}

public void setUpgradeDate(Date upgradeDate) {

this.upgradeDate = upgradeDate;

}

public String getUpgradeNotes() {

return upgradeNotes;

}

public void setUpgradeNotes(String upgradeNotes) {

this.upgradeNotes = upgradeNotes;

}

}

package leisureFacility;

public class Booking

{

private String id;

private String court;

private String venue;

private Stadium stad;

public Booking(String id, String court, String venue, Stadium stad) {

this.id = id;

this.court = court;

this.venue = venue;

this.stad = stad;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getCourt() {

return court;

}

public void setCourt(String court) {

this.court = court;

}

public String getVenue() {

return venue;

}

public void setVenue(String venue) {

this.venue = venue;

}

public Stadium getStad() {

return stad;

}

public void setStad(Stadium stad) {

this.stad = stad;

}

}

package leisureFacility;

public class Stadium

{

private String id;

private String name;

private String location;

public Stadium(String id, String name, String location) {

this.id = id;

this.name = name;

this.location = location;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getLocation() {

return location;

}

public void setLocation(String location) {

this.location = location;

}

}

package leisureFacility;

import java.util.*;

public class Session

{

private Date begin;

private Date end;

ArrayList<Booking> bookings = new ArrayList<Booking>();

public Session(Date begin, Date end) {

this.begin = begin;

this.end = end;

}

public Date getBegin() {

return begin;

}

public void setBegin(Date begin) {

this.begin = begin;

}

public Date getEnd() {

return end;

}

public void setEnd(Date end) {

this.end = end;

}

public ArrayList<Booking> getBookings() {

return bookings;

}

public void setBookings(ArrayList<Booking> bookings) {

this.bookings = bookings;

}

public Booking findBooking(String id1)

{

for (Booking current : bookings)

{

if (current.getId().equals(id1))

return current;

}

return null;

}

}

Q3) (6 marks)

Repeat the mapping process in Question 2 (including the findBooking method) using C# but only show the code that is different than Java.

using System;

using System.Collections.Generic;

using System.Collections;

namespace First14_1_C_Sharp

{

namespace LeisureProgram

{

class Tutor

{

private string id;

public string Id

{

get { return id; }

set { id = value; }

}

public string Name { get; set; }

public string Desc { get; set; }

public Tutor(string id1, string name1, string desc1)

{

Id = id1;

Name = name1;

Desc = desc1;

}

}

class Program

{

public string Code { get; set; }

public DateTime Date { get; set; }

public double Fee { get; set; }

public Tutor tutor { get; set; }

}

}

namespace Member

{

using LeisureProgram;

class Transaction

{

public string id { get; set; }

public double Fee { get; set; }

}

class Member

{

public string Id { get; set; }

public string Name { get; set; }

public string Address { get; set; }

public Program Prog { get; set; }

ArrayList trans = new ArrayList();

ArrayList bookings = new ArrayList();

public Member(string id1, string name1, string address1, Program prog1)

{

Id = id1;

Name = name1;

Address = address1;

Prog = prog1;

}

}

class VIPMember : Member

{

public DateTime UpgradeDate { get; set; }

public string UpgradeNodets { get; set; }

public VIPMember(string id1, string name1, string address1, Program prog1,

DateTime upgrade1, string notes1)

: base(id1, name1, address1, prog1)

{

UpgradeDate = upgrade1;

UpgradeNodets = notes1;

}

}

}

namespace LeisureFacility

{

class Stadium

{

public string Id { get; set; }

public string Name { get; set; }

public string Location { get; set; }

}

class Booking

{

public string Id { get; set; }

public string Court { get; set; }

public string Venue { get; set; }

public Stadium stad { get; set; }

}

class Session

{

public DateTime begin { get; set; }

public DateTime end { get; set; }

ArrayList bookings = new ArrayList();

public Booking FindBooking(string id)

{

foreach (Booking current in bookings)

{

if (current.Id==id)

return current;

}

return null;

}

}

}

}

10