COMPUTER SCIENCE 2P05
Programming Languages Data Abstraction and Encapsulation
Brock University
Brock University (Data Abstraction and Encapsulation)Programming Languages 1 / 25
COMPUTER SCIENCE 2P05 Programming Languages Data Abstraction and - - PowerPoint PPT Presentation
COMPUTER SCIENCE 2P05 Programming Languages Data Abstraction and Encapsulation Brock University Brock University (Data Abstraction and Encapsulation)Programming Languages 1 / 25 Abstraction Recall that weve covered numerous forms of
Brock University (Data Abstraction and Encapsulation)Programming Languages 1 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 2 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 3 / 25
◮ e.g. is a stack without a push or pop really a stack?
◮ We’d rather use getters and setters (accessors and updaters), rather
⋆ Both because it reduces the chances of unexpected side effects, and
◮ We remember how we achieve this in Java, right?
◮ Though this largely relates back to the first point Brock University (Data Abstraction and Encapsulation)Programming Languages 4 / 25
◮ You can look at a closure as being an example of encapsulation ◮ For this lecture, we’ll be looking at a different example: defining
Brock University (Data Abstraction and Encapsulation)Programming Languages 5 / 25
◮ These groups will remain effectively atomic for their time within the GQ
◮ This does not mean the GQ itself will be printing! Traversal has many
Brock University (Data Abstraction and Encapsulation)Programming Languages 6 / 25
◮ That interface would include abstract method headers ◮ We’d define English-ish methods to correspond to the operators
◮ These would need to satisfy the interface’s promises ◮ We’d need to pick constructors that make sense ⋆ We might even use a little constructor chaining
Brock University (Data Abstraction and Encapsulation)Programming Languages 7 / 25
◮ Think: something roughly analogous to the typical remove() method
◮ https://docs.python.org/2.7/library/abc.html ◮ http://masnun.rocks/2017/04/15/interfaces-in-python-protocols-and-abcs/
Brock University (Data Abstraction and Encapsulation)Programming Languages 8 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 9 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 10 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 11 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 12 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 13 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 14 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 15 / 25
◮ Wait, not quite ◮ It’s iterable if it can give an iterator (and can, if desired, be its own
◮ How/when? It has an
⋆ If it’s its own iterator, it’ll just return self
Brock University (Data Abstraction and Encapsulation)Programming Languages 16 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 17 / 25
◮ If not, we can write a quick example
Brock University (Data Abstraction and Encapsulation)Programming Languages 18 / 25
◮ Whenever a yield is encountered, execution within that function is
◮ Since it creates an iterator for you, it will raise a StopIteration
Brock University (Data Abstraction and Encapsulation)Programming Languages 19 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 20 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 21 / 25
◮ It makes it easier to write (or read) a snippet of code ◮ It’s an optional rephrasing to turn it into a more natural language
◮ It (usually) has a more complex — but equivalent — ‘traditional’ way
Brock University (Data Abstraction and Encapsulation)Programming Languages 22 / 25
Brock University (Data Abstraction and Encapsulation)Programming Languages 23 / 25
◮ https://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html ◮ http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#FAQ103
◮ https://docs.python.org/2/library/functions.html
◮ https://docs.python.org/2.7/library/operator.html
◮ https://www.codementor.io/sheena/advanced-use-python-decorators-class-function-du107nxsv Brock University (Data Abstraction and Encapsulation)Programming Languages 24 / 25
◮ Seriously, who does/doesn’t feel like independently learning a library to
Brock University (Data Abstraction and Encapsulation)Programming Languages 25 / 25