Presentation on theme: "What have we learned so far? u Week 1 Summary u There are things called classes that describe things we are interested in representing in software. u There."— Presentation transcript:
What have we learned so far? u Week 1 Summary u There are things called classes that describe things we are interested in representing in software. u There are things called objects that are realisations or instantiations or instances of classes. u Only objects can be manipulated. u The only things we can do to an object are u Inspect the state using a relational expression u Alter the state using assignment u Ensuring objects have the correct initial state is absolutely crucial. u Weeks 2 and 3 Summary u Inspection and alteration can be combined in three patterns (or programming constructs) – sequence, selection and iteration u For convenience a variety of selection and iteration mechanisms are provided. u Sophisticated computing solutions are created using objects that have a large number of simple operations, or methods. u Methods may require (parameter) data and may provide result (return) data u Methods can be categorised as functions or procedures. u Frequently occurring utility objects (e.g. strings) do not need to be built from scratch and are provided by Java with associated API (method headers) descriptions
Relational Expressions u Relational (or boolean) expressions are interesting because when evaluated they produce one of only two possible results. u To evaluate a relational expression Java simply tests the truth of the expression and reports on the outcome. u Evaluating the test involves deciding whether it is TRUE or FALSE; Yes or No. u Relational expressions are sometimes called conditions.
Relational Expressions u The following binary operators are defined for relational expressions ==equal<=Less than or equal !=not equal>=Greater than or equal >Greater than<Less than u Note double = is used for equality to avoid ambiguity with the assignment operator. u Relational operators are not type specific.
Relational Expressions u A simple relational expression involves one operator and two operands. u Examples of simple relational expressions 4 < 3 WeeklyPay > AverageIndustrialWage InterestRate <= 6.5 ApplicantsAge >= 18 LottoSlipNumber = = ChosenNumber CursorOffScreen = CursorPosition > ScreenWidth FoundIt = CurrentPageInBook = = PageToLookFor
Relational Expressions u The last two examples are important because they highlight the fact that, just like other expressions, the result of a relational expression can be assigned to a variable. u This practice can be a useful documentation aid because it allows us to name conditions thereby making the program a little easier to read.
Relational Expressions u More powerful relational expressions are possible using the Logical Operators AND and OR. u In effect, the logical operators are used toconnect two or more simple relational expressions thereby forming one composite relational expression. u Java uses && for specifying AND connections || for specifying OR connections
Relational Expressions u For example NumberOfPersons <= LiftCapacity && FloorSelected != CurrentFloor Age >= 18 && Age <= 65 EntryPoints >= CourseCutOff || Age >= 24 AccountType == Current || AccountType == Deposit u The Logical Operators have some very important behavioural characteristics which we need to remember. u These characteristics are often described pictorially by means of a TRUTH TABLE.
Truth Table for AND u The following truth table applies to the && operator RelExp1RelExp2Result TTT FTF TFF FFF u Notice that BOTH sub-expressions must be true for the result of the composite expression to be true.
Truth Table for AND u Truth Tables can easily be extended to describe composite expressions involving more than two sub-expressions. u NOTE, that no matter how many subexpressions are used the composite expression always produces a single result and this represents the result of the entire relational expression.
Truth Table for OR u The following truth table applies to the || operator RelExp1RelExp2Result TTT FTT TFT FFF u Notice that when ANY ONE of the sub- expressions is true the result of the composite expression is true.
Truth Table for OR u Again, the Truth Table can easily be extended to describe composite expressions involving more than two sub- expressions u NOTE, that no matter how many subexpressions are used the composite expression always produces a single result and this represents the result of the entire relational expression.
Scaling Up u When we create an algorithm to solve a particular problem we may find that the solution does not scale up for larger instances of the same problem. u For example, our solution for talking like a pirate is adequate (just about) for that particular instance of the problem but it would be completely inadequate, tedious and inefficient if the list had 10000 words or more!
Scaling Up u Ideally, we should try to develop solutions which lend themselves to modification for larger problems of the same type. u To create programs like this we need some more tools. u One of the major drawbacks of the pirate translator is that we had to include an if for each word so each one was unique. u Treating each one as unique makes adding new ones problematic.
Scaling Up u The pirate talker is an example of the type of situation we encounter quite frequently in programming environments. u Sometimes we would like to be able to treat a number of related items as a collection so that we would not have to explicitly reference each one. u At other times we would like to be able to treat them as separate and unique so that we can process them individually.
Scaling Up u Strings are an example of this type of requirement but they have limitations u We can only manipulate portions of the string u We cant change individual characters (we can of course inspect them but we cant alter them) u Alterations actually create new strings and discard the old ones String s = University ; String t = of Limerick ; s = s + t ;
Lists u A list is a collection of data items. u A list has three important aspects u The data in the list u The capacity of the list u The current usage of the capacity u What kind of things would we want to do to a list?
Lists u Add/Insert a new item u Remove/Delete an existing item u Modify an existing item u Show the list contents u Sorted in some order? u Find/Search the list for an item u Browse the list