S249/201 DUBLIN INSTITUTE OF TECHNOLOGY KEVIN STREET, DUBLIN 8. _____________ BSc Information Systems/ Information Technology Stage 2 ______________ SEMESTER 1 EXAMINATIONS 2010 ______________ MARKING SCHEME Mr. J. Gilligan Dr. D Lillis Dr M Ali January 2010 2hrs Answer Question One and any two others Question One carries 30 marks, all others carry 35 marks 1: a) Define what is meant by Object Oriented Programming and describe two ways in which it differs from traditional imperative programming. (6marks) Sample Answer Object-oriented programming may be seen as a collection of cooperating objects, as opposed to a traditional view in which a program may be seen as a group of tasks to compute ("subroutines"). In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent little machine with a distinct role or responsibility. The actions or "operators" on the objects are closely associated with the object. For example, in object oriented programming, the data structures tend to carry their own operators around with them (or at least "inherit" them from a similar object or "class"). The traditional approach tends to view and consider data and behavior separately. Question Rationale The students should be able to articulate the underlying philosophy of the object oriented paradigm. Marking Scheme 2 marks for Definition 2 X 2 marks for each difference. b) State whether or not each of the following declarations is legal in JAVA ? In each case explain your answer. A. B. C. D. public MyClass {//...} public protected int myVar; friendly Button myButton; Label myLabel (4 marks) Answer A – ok B – wrong, cannot be public and protected C wrong no friendly modifier D – OK if Label is a defined class Question Rationale The objective of this question is to assess the students awareness of the access modifiers in Java. Marking Scheme 4 X 1 marks for correct answer c) class TClass { public static void main(String [] args) { int arr[] = new int[args.length]; float var1 = 0; for (int i = 0; i < args.length; i++) arr[i] = (new Integer(args[i])).intValue(); for (int i = 0; i < arr.length; i++) var1 = (i%2==0)?0:arr[i]; System.out.println(var1/args.length); } } What would be the output of the above program given the following invocation: > java – classpath . TClass 20 45 60 85 100 205 300 405 Explain how you arrived at your answer. (10 marks) Answer Answer 50.625 The argument strings are each convereted to an integer value. This program takes the last arg value and if its index is even it assigns 0 to var1 otherwise it assigns the integer equivalent of the last arg value 405 to var1. It then divides 405 by 8 the no of arguments which yields 50.625 And this is output. Question Rationale This question is intended to assess the students understanding of java code. There are some subtle elements in this program It uses command line arguments. It uses the ? operator It uses casting. The students will need to get these features in order to arrive at a correct output Marking Scheme 5 marks for correct answer 5 marks for explaining how it arrived d) Write a program to print out the following: 1 12 123 1234 ……… 1 2 3 4 5 6 7 8 9 10 (10 marks) // First Program Trianglenos public class Trianglenos{ public static void main(String args []){ int i; String s1; s1 = "1"; System.out.println(s1); for(i=2;i < 11;i++) { s1 = s1 + " " + i; System.out.println(s1); }; } } Question Rationale The students previous language was C. We did exercises like these in order to establish the commonality of the Java Syntax with C. This exercise is designed to refelect that experience. Marking Scheme 6 marks for basic attempt at program 4 marks for good explanation or annotation. 2: a) Describe briefly , the concept of Semantic Networks. In particular show how semantic nets can model abstract superclasses. Support Your Answer with appropriate illustration. (6 marks) Sample Answer • Semantic networks are a popular scheme which elegantly reflect these ideas. • A network consists of nodes repesenting objects, concepts and events and links between the nodes representing their interrelations. • The development of semantic networks had its origins in psychology. Ross Quillian in 1968 designed two semantic network based systems that were intended primariliy as psychological models of associateive memory. • Semantic Networks quickly found application in AI. B. Raphaels SIR system, also 1968, was one of the first programs to use this type of representation scheme. • SIR was a question Answering system and could answer questions requiring a variety of simple reasoning tasks and relationships • Example likes Dog bone • While there are no fixed conventions, a number of important features of Semantic nets have emerged , that are widely used. • These have largely emerged because of the application of Semantic Nets to Object Oriented Theory. • The central aspect of the object paradigm is how it defines objects. • The basic mechanism of representation is the articulation of class hierarchies. • Instances of Objects exist. In turn Objects belong to classes and these in turn can belong to other classes • The central aspect of the object paradigm is how it defines objects. • The basic mechanism of representation is the articulation of class hierarchies. • Instances of Objects exist. In turn Objects belong to classes and these in turn can belong to other classes Question Rationale Semantic nets are the basis for the object model in object orieneted representation. The students should show awareness of their features Marking Scheme 3 marks for overview 1 mark for class hierarchy 2 for diagrams b) Represent the following sentence as a Semantic Network.. “I own a plastic green chair” (7 marks) Answer Question Rationale This is a practical application of this representation scheme. The students have done a practical on this topic and I expect a detailed net which accurately reflects the elements of this picture. Marking Scheme 4 marks for a comprehensive representation 3 marks for relevant extra details included in the network such as implied class associations. c) In a constructor of a derived class, how do you call the parent's constructor? (2 marks) Answer Using super keyword Question Rationale This is to do with basic syntactic realisation of inheritance construct in Java Marking scheme 2 marks for correct answer d) Design an Account Class which has a balance field and three methods i) Deposit , ii) Withdraw and iii) Get Balance: (6 marks) Answer public class Account { protected double balance; // Constructor to initialise balance public Account( double amount ) { balance = amount; } // Overloaded constructor for empty balance public Account() { balance = 0.0; } public void deposit( double amount ) { balance += amount; } public double withdraw( double amount ) { // See if amount can be withdrawn if (balance >= amount) { balance -= amount; return amount; } else // Withdrawal not allowed return 0.0; } public double getbalance() { return balance; } } Question Rationale This exercise is addresses basic Java User Class definition Marking Scheme 3 marks for basic attempt 3 marks for completeness c ) Design and Implement a Savings Account Class which is a subclass of Account and has i) Extra fields representing a default Interest Rate and a variable Interest Rate ii) One Constructor which sets the variable interest rate to the default interest rate and the balance to 0 and a second constructor which takes the opening balance and interest rate value as parameters. ii) Extra method to calculate the monthly interest by multiplying the balance by variable Interest Rate divided by 12; this interest should be added to Account Balance. (8marks) Answer class SavingsAccount extends Account { // Default interest rate of 7.95 percent (const) private static double default_interest = 7.95; // Current interest rate private double interest_rate; // Overloaded constructor accepting balance and an interest rate public SavingsAccount( double amount, double interest) { balance = amount; interest_rate = interest; } // Overloaded constructor accepting balance with a default interest rate public SavingsAccount( double amount ) { balance = amount; interest_rate = default_interest; } // Overloaded constructor with empty balance and a default interest rate public SavingsAccount() { balance = 0.0; interest_rate = default_interest; } public void add_monthly_interest() { // Add interest to our account balance = balance + (balance * interest_rate / 100) / 12; } } Question Rationale This exercise is addresses basic Java User Class Derived Class definition Marking Scheme 1 marks for correctly using extends and 2 for correctly accessing parent class 1 X 3 for each section 2 for completeness of implementation d) Write a control program which uses the classes in parts b and c to create a Savings account and which i) Deposits 250 euros ii) Withdraws 80 euros iii) Calculates the monthly interest on current Balance After each action the Account balance should be displayed. (6 marks) Answer /* * * SavingsAccountDemo * Demonstration of SavingsAccount class * */ class SavingsAccountDemo { public static void main(String args[]) { // Create an empty SavingsAccount SavingsAccount my_SavingsAccount = new SavingsAccount(); // Deposit money my_SavingsAccount.deposit(250.00); // Print current balance System.out.println ("Current balance " + my_SavingsAccount.getbalance()); // Withdraw money my_SavingsAccount.withdraw(80.00); // Print remaining balance System.out.println ("Remaining balance " + my_SavingsAccount.getbalance()); my_SavingsAccount.add_monthly_interest(); System.out.println ("Remaining balance " + my_SavingsAccount.getbalance()); } } Question Rationale This exercise is addresses basic Java Control Program definition The student needs to be able to correctly use defined classes. Marking Scheme 2 marks for correct instantiation 1 mark X 3 marks for correct method invocation for each of the subtasks requested. 1 mark for displaying balance 3: a) Given the following abstract Singer Class: public abstract class Singer { private String nameOfSinger; // This abstract method is to output the kind of songs the singer sings public abstract void sings(); public String getSingerName() { return nameOfSinger; } public void setSingerName(String name) { nameOfSinger = name; } } Create three subclasses of Singer which describe Jazz Singers, Pop Singers and Opera Singers. (6 marks) Answer public class PopSinger extends Singer { public void sings() { System.out.println("Sings Pop Songs"); } } public class JazzSinger extends Singer { public void sings() { System.out.println("Sings Jazz songs"); } } public class OperaSinger extends Singer { public void sings() { System.out.println("Sings Classical Songs"); }} Question Rationale This question looks at abstract java constructs and how these can be made concrete through the definition of subclasses. Marking Scheme 2 marks X 3 for each subclass b) Write a control program which demonstrates the use of the classes defined in part a above (6 marks) Answer public class UseSingers { public static void main(String[] args) { JazzSinger myJazzSinger = new JazzSinger(); PopSinger myPopSinger = new PopSinger(); OperaSinger myOperaSinger = new OperaSinger(); myJazzSinger.setSingerName("Murphy"); myPopSinger.setSingerName("Elsie"); myOperaSinger.setSingerName("Sammy"); System.out.print(myJazzSinger.getSingerName() + " says "); myJazzSinger.sings(); System.out.print(myPopSinger.getSingerName() + " says "); myPopSinger.sings(); System.out.print(myOperaSinger.getSingerName() + " says "); myOperaSinger.sings(); } } Question Rationale This exercise is addresses basic Java Control Program definition The student needs to be able to correctly use defined classes. Marking Scheme 2 marks for correct instantiation 1 mark X 3 marks for correct method invocation of each class sing method 1 mark for any extra detail. c) Define what is meant by a java interface; (4 marks) Answer An interface in the Java programming language is an abstract type that is used to specify an interface (in the generic sense of the term) that classes must implement. Interfaces are declared using the interface keyword and may only contain method signatures and constant declarations (variable declarations which are declared to be both static and final). Question Rationale The interface facility in Java is a big mechanism in creating portable systems The students should be able to describe this concept Marking Scheme 3 marks for good articulation of interface concept, 1 mark for anything extra and relevant. d) i) Define a java interface called Professional which has one method signature called work. (4 marks) Answer public interface Professional { public void work(); } Question Rationale This objective here is to show ability to correctly define a small interface Marking Scheme 4 marks for correct interface definition ii) Define a User Class called ProfessionalJazzSinger which extends the JazzSinger class defined in a above and which implements the Professional interface. This class is to have an extra field to represent hours spent training and methods to get and set this. (9 marks) Answer public class ProfessionalJazzSinger extends JazzSinger implements Professional { private int hoursOfTraining; public void setHoursOfTraining(int hrs) { hoursOfTraining = hrs; } public int getHoursOfTraining() { return hoursOfTraining; } public void work() { System.out.println("I am a JazzSinger who works"); System.out.println("I have " + hoursOfTraining + " hours of professional training!"); } } Question Rationale In the first part of this question an interface was defined. In this part we implement the interface. Marking Scheme 2 marks for correct use of implements keyword 2 marks for correctly defining subclass 2 marks for the get and set methods 3 marks for definition of work method. e) Write a control program which demonstrates the use of the ProfessionalJazzSingers class defined in part e above. (6 marks) Answer public class DemoProfessionalJazzSingers { public static void main(String[] args) { ProfessionalJazzSinger dizzy = new ProfessionalJazzSinger(); ProfessionalJazzSinger jazzy = new ProfessionalJazzSinger(); dizzy.setSingerName("Simon"); jazzy.setSingerName("Sophie"); dizzy.setHoursOfTraining(40); jazzy.setHoursOfTraining(300); System.out.println(dizzy.getSingerName() + " says "); dizzy.sings(); dizzy.work(); System.out.println(); System.out.println(jazzy.getSingerName() + " says "); jazzy.sings(); jazzy.work(); } } public class DisplayJazzSinger { public static void main(String[] args) { JazzSinger myJazzSinger = new JazzSinger(); String JazzSingerString = myJazzSinger.toString(); System.out.println(JazzSingerString); } } Question Rationale This exercise is addresses basic Java Control Program definition The student needs to be able to correctly use defined classes. Marking Scheme 2 marks for correct instantiation 1 mark X 3 marks for correct method invocation of each class sing method 1 mark for any extra detail. 4: a) Courses is an array which contains the following DIT course codes: {DT211,DT249, DT228,DT210} Write a java program which takes a course code as input and checks to see if that code is in the Courses array. (10 marks) Answer import javax.swing.*; public class SearchList { public static void main(String[] args) { String[] deptName = {DT211,DT249, DT228,DT210}; String code; int x; boolean codeWasFound = false; code = JOptionPane.showInputDialog(null, "Enter a department name"); for(x = 0; x < deptName.length; ++x) if(code.equals(deptName[x])) codeWasFound = true; if(codeWasFound) JOptionPane.showMessageDialog(null, code + " was found in the list"); else JOptionPane.showMessageDialog(null, code + " was not found in the list"); System.exit(0); } } Question Rationale The students previous language was C. We did exercises like these in order to establish the commonality of the Java Syntax with C. One key follow an was with arrays. This exercise is designed to reflect that experience. Marking Scheme 6 marks for basic attempt at program 4 marks for good explanation or annotation. b) Compare and contrast vectors and arrays in java (4 marks) Answer • • • • Vectors are much like arrays in that Vectors are homogeneous - vectors typically store only one kind of element; indexed - vectors permit clients to access values using integers that indicate position; efficient - vectors provide fast access to values. Vectors differ from arrays in that they are expandable - you can continue to add elements to a vector, even if the vector has grown beyond its original size. Question Rationale This is to evaluate students understanding of the array and vector classes of java. They are similar in many respects but different in the crucial ability to expand of vectors and in the methods employed. Marking scheme 2 for similarities 2 for differences. c) Define a class Person which has fields , first name and surname and defines a toString method. (5 marks) Answer public class Person { private String firstName; Provate String surname; public Person(String firstName, String surname) { this.firstName = firstName; this.surname = surname; } public String toString() {return firstName + " " + surname; } } Question Rationale This exercise is addresses basic Java User Class definition Marking Scheme 3 marks for basic attempt 2 marks for completeness d) Write a java class which uses vectors to represent a crowd of people as defined by the Person class in part c above (8 marks) import java.util.*; class Crowd { private Vector people; public Crowd() { people = new Vector(); } public Crowd(int numPersons) { people = new Vector(numPersons); } public boolean add(Person someone) { return people.add(someone); } Person get(int index) { return (Person)people.get(index); } public int size() { return people.size(); } public int capacity() { return people.capacity(); } public Iterator iterator() { return people.iterator(); } } Question Rationale This exercise is addresses basic Java User Class Derived Class definition Significantly it also involves the use of a vector. Marking Scheme 1 marks for correctly using extends and 2 for correctly accessing parent class 3 marks for correctly using vector 2 for completeness of implementation e) Write a control program which uses the crowd class and which does the following: i) Adds five people to the crowd ii) Outputs the 3rd person in the crowd iii) Removes the 2nd person from the crowd iv) Outputs the size of the crowd. (8 marks) Answer public class Crowddemo { public static void main(String[] args) { Crowd crowd1 = new Crowd() Person p1 = new Person(“JR”,” Ewing”); crowd1.add(p1); Person p2 = new Person(“Bobby” , “Ewing”); crowd1.add(p2); Person p3 = new Person(“SueEllen”,” Ewing”); crowd1.add(p3); Person p4 = new Person(“Granny” , “Ewing”); crowd1.add(p4); Person p5 = new Person(“Chuck” , “Ewing”); crowd1.add(p5); Person p6 = crowd1.get(2); System.out.println(p6.toString()); crowd1.remove(1); System.out.println(“size is “ + crowd1.size()); }} Question Rationale This exercise is addresses basic Java Control Program definition The student needs to be able to correctly use defined classes. Marking Scheme 2 marks for correct instantiation 1 mark X 4 marks for correct method invocation of each class sing method 2 marks for any extra detail.