Sunday, 20 September 2020

Computer Science Reference List

CS Reference List

This is a collection of papers, websites and books that I have found useful when researching into computer science. Mainly into programming paradigms and languages, focusing on understanding OOP

OOP



Phenomena and Concepts

Website

http://people.cs.aau.dk/~normark/oop-csharp/html/notes/intro-oop_themes-phen-concepts-sect.html

PDF

https://drive.google.com/file/d/1FQLDJC6Kj2r7SeLZK1YnLCcJP6tKvvrH

About

Learning how objects relate to philosophical concepts and phenomena, provides a starting point to model objects.

Archived

  • Wayback machine (20/09/2020)
  • Google drive (20/09/2020)

Specialization of classes

Website

http://people.cs.aau.dk/~normark/oop-csharp/html/notes/inheritance_themes-specialization-sect.html#inheritance_specialization-sect_section-title_1

PDF

https://drive.google.com/file/d/1FQLDJC6Kj2r7SeLZK1YnLCcJP6tKvvrH

About

A description of inhertiance using sets.

Archived

  • Wayback machine (20/09/2020)
  • Google drive (20/09/2020)

A Tour of C++

Blog post

https://www.informit.com/articles/article.aspx?p=25003

About

Bjarne stroustrup on Procedural, Modules, ADT, Abstract types and Objects.

Archived

  • Wayback machine (all pages available 20/09/2020)

On Understanding Data Abstraction

PDF

https://drive.google.com/file/d/1dYfehZ764TL_k_RpH-xTGr0Zt9TFOdTo/view?usp=sharing

About

This paper describes what the difference between an Object (OOP) and ADT (abstract data type) is.

Archived

  • https://drive.google.com/file/d/1dYfehZ764TL_k_RpH-xTGr0Zt9TFOdTo/view?usp=sharing




Modules



Criteria for modularity

PDF

https://drive.google.com/file/d/1_q3AWXMsl5jZjkS7C68czn8kNQkCXAoG/view?usp=sharing

About

A white paper describing how to modularize a program.

Archived

  • Google drive (20/09/2020)




Records



ALGOL bulletin No. 21 - AB21.3.6 "Record Handling"

PDF

https://drive.google.com/file/d/1dYfehZ764TL_k_RpH-xTGr0Zt9TFOdTo/view?usp=sharing

About

An old ALGOL bulletin paper that describes records and their relation to types.

Archived

  • Google drive (20/09/2020)

Sunday, 6 September 2020

OOP Quotes 1: ADT vs Object

From: "On Understanding Data Abstraction, Revisited. William R. Cook"

 "in modern object-oriented languages, the issue boils down to whether or not classes are used as types. In a pure object-oriented style, classes are only used to construct objects, and interfaces are used for types. When classes are used as types, the programmer is implicitly choosing to use a form of abstract data type."

 

"To summarize, when a class name is used as a type, it represents an abstract data type"

 

"Object-Oriented Programming in Java

While Java is not a pure object-oriented language, it is possible to program in a pure object-oriented style by obeying the following rules

Classes only as constructors: A class name may only be used after the keyword new.

No primitive equality: The program must not use primitive equality (==). Primitive equality exposes representation and prevents simulation of one object by another. "


"Objects work with interfaces as types"

"OOP is using dynamic dispatch, ADT does not"

"ADT work with class as types"



Example ADT:

C++

class Person {}

Person p = new Person();

C

struct set rep; // representation is not defined in header  

typedef struct set rep* set;
set empty();
bool isEmpty(set s);

set insert(set s, int i); 

bool contains(set s, int i); 

set union(set s1, set s2);

 

 

Example Objects:

class PersonManager {};

 
class PersonSystem {

    void printName(Person p) {}

    PersonManager m_manager;

};

Person p = new Person();

PersonSystem.printName(p);



Computer Science Reference List

CS Reference List This is a collection of papers, websites and books that I have found useful when researching into computer science. Mainl...