Compilado de programas, anotações e atividades da disciplina de Programação Orientada a Objeto (SSC0103) oferecida pelo ICMC-USP.
Introduzir os conceitos de programação orientada a objetos e metodologia de desenvolvimento de software segundo esse paradigma.
Introduce the object oriented programming and object oriented software development concepts.
Projeto orientado a objetos. Encapsulamento e ocultação de informação (information hiding). Separação de comportamento e implementação. Classes e subclasses. Herança – Overriding, Dynamic dispatch. Polimorfismo – Relação entre Polimorfismo (de subtipo) e Herança. Hierarquias de classes. Classes de coleções e métodos de interação – Conjuntos, Listas e Mapas.Objetivos de aprendizado:1. Justificar a filosofia do projeto orientado a objetos e os conceitos de encapsulamento, abstração, herança e polimorfismo.2. Projetar, implementar, testar e depurar programas simples em uma linguagem de programação orientada a objetos.3. Descrever como o mecanismo de classes suporta encapsulamento e ocultação de informação (information hiding).4. Projetar, implementar e testar a implementação de relações “é-um” (is-a) entre objetos usando uma hierarquia de classes e herança.5. Comparar e contrastar as noções de overloading e overriding métodos numa linguagem orientada a objetos.6. Descrever como iteradores (iterators) acessam os elementos de coleções.
Object oriented design. Encapsulation and information hiding. Implementation and behavior separation. Classes and subclasses. Inheritance – overriding, dynamic dispatch. Polymorphism – relation between subtype polymorphism and inheritance. Class hierarchy. Class collections and iteration methods – sets, lists and maps. Learning goals: 1) Justify the philosophy of object-oriented design and the concepts of encapsulation, abstraction, inheritance, and polymorphism; 2) Design, implement, test, and debug simple programs in an object-oriented programming language; 3) Describe how the class mechanism supports encapsulation and information hiding; 4) Design, implement, and test the implementation of “is-a” relationships among objects using a class hierarchy and inheritance; 5) Compare and contrast the notions of overloading and overriding methods in an object-oriented language; 6) Describe how iterators access the elements of a container.