Skip to main content
added 203 characters in body
Source Link

since AstPrinter is the "visiting" operation (but then the method of extracting the result from the AstPrinter would be different). This sort of reversal is more suitable when you're implementing an internal iterator (where you pass the operation to the iterator, but then the iterator internally passes the elements to the operation).

since AstPrinter is the "visiting" operation (but then the method of extracting the result from the AstPrinter would be different).

since AstPrinter is the "visiting" operation (but then the method of extracting the result from the AstPrinter would be different). This sort of reversal is more suitable when you're implementing an internal iterator (where you pass the operation to the iterator, but then the iterator internally passes the elements to the operation).

minor change for clarity
Source Link

You see, there are two major approaches to data abstraction 1. OOP achieves it by abstracting away procedure calls. As in, you are actually specifying an abstract operation when you're making the call (you're specifying "the message"), and the actual function you're calling is being resolved by some underlying mechanism. This underlying mechanism allows objects to respond to a certain interface (a set of public methods/messages), which makes it easy to add new representations (by subclassing), but harder to add new operations. Note that, when utilizing this sort of polymorphism, while the code that creates the objects knows concrete types, other client code is written in terms of the abstract type (and in this case of OOP, itthat specifically means in terms of the interface defined by that abstract type).

You see, there are two major approaches to data abstraction 1. OOP achieves it by abstracting away procedure calls. As in, you are actually specifying an abstract operation when you're making the call (you're specifying "the message"), and the actual function you're calling is being resolved by some underlying mechanism. This underlying mechanism allows objects to respond to a certain interface (a set of public methods/messages), which makes it easy to add new representations (by subclassing), but harder to add new operations. Note that, when utilizing this sort of polymorphism, while the code that creates the objects knows concrete types, other client code is written in terms of the abstract type (and in this case, it specifically means in terms of the interface defined by that abstract type).

You see, there are two major approaches to data abstraction 1. OOP achieves it by abstracting away procedure calls. As in, you are actually specifying an abstract operation when you're making the call (you're specifying "the message"), and the actual function you're calling is being resolved by some underlying mechanism. This underlying mechanism allows objects to respond to a certain interface (a set of public methods/messages), which makes it easy to add new representations (by subclassing), but harder to add new operations. Note that, when utilizing this sort of polymorphism, while the code that creates the objects knows concrete types, other client code is written in terms of the abstract type (and in case of OOP, that specifically means in terms of the interface defined by that abstract type).

added 79 characters in body
Source Link

where'swhereas it should be:

wheresand

where's it should be:

wheres

whereas it should be:

and

added 79 characters in body
Source Link
Loading
Source Link
Loading