conceitos básicos de orientação a objetos
TRANSCRIPT
Conceitos básicos de Orientação a Objeto
Sérgio Souza Costa
Universidade Federaldo Maranhão
24 de outubro de 2016
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 1 / 28
Os slides a seguir foram retirados do livro Java In Nutshell [1].
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 2 / 28
Introdução
Figura: Baixo e altonível
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 3 / 28
Introdução
1 Central to this view of computation is the notion of self-contained little systems that worktogether [?].
2 OOP tools and languages facilitate the description of objects as self-contained systemsthat maintain their:
1 own internal state (data)2 perform actions (methods)3 interact with other objects (by sending messages to one another)
3 Objects can be low-level programming tools, such as lists, stacks, and trees, akin totraditional abstract data types (ADTs).
4 They can also be higher-level abstractions that reflect what a program is intended tomodel: an automated teller machine (ATM), a deck of playing cards, an elevator, or acollection of graphical objects on a screen.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 4 / 28
IntroduçaoMudança de enfoque
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 5 / 28
Introdução
Programação procedural Programação OOTipos de dados ClasseVariável Objeto/InstânciaFunção/Procedimento Operação/MétodoChamada de função Enviodemensagem
Tabela: Procedural vs Orientado a Objetos
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 6 / 28
Conceitos chaves
1 Objetos2 Classes3 Mensagens4 Relações
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 7 / 28
Objeto
Conceito:Unidade utilizada para modelar objetos do mundo real.
Características:Possuem estados (variáveis de instância);Possuem definições que estabelece como responder a certas mensagens que recebeexternamente que são chamados métodos.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 8 / 28
Objeto
Estado: Implementadoatravés de um conjunto depropriedades (atributos).Comportamento: Definecomo um objeto reage àsrequisições de outrosobjetos.Identidade única:Propriedade que distingueum objeto de outros objetos.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 9 / 28
Objetos
1 Coisas tangíveis (produtos)2 Eventos (copa do mundo, simpósio)3 Transações (contrato, pedido de compra)
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 10 / 28
Objeto - Exemplo
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 11 / 28
ObjetosDiferentes perspectivas sobre os objetos (Fonte: [2])
1 At the conceptual level, an object is a set of responsibilities2 At the specification level, an object is a set of methods that can be invoked by other
objects or by itself.3 At the implementation level, an object is code and data.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 12 / 28
Objeto - Encapsulamento
Conceito: Encapsulamento é definido como uma técnica para minimizar asinterdependências entre “módulos”Benefícios
Segurança: protege os atributos dos objetos de serem corrompidos por outros objetosIndependência: “escondendo” seus atributos e métodos.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 13 / 28
Objeto - Encapsulamento
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 14 / 28
Classes
Conceitos"A class is a family ofobjects with similar variablecomponents andmethods"[3].As Classes são como fábricasde objetos. Você constróium novo objeto de umaclasse com operador new.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 15 / 28
Objetos vs Classes
A mesma diferença entre o conceito de um cachorro (universal) e o cachorro em particular.Uma classe descreve como os cachorros são:
Atributos: peso, altura, cor de olhos, cor de pelo, temperamento etc.;Ações: comer, dormir, latir, correr e andar.
Um cachorro em particular possui:Peso (30 quilos), altura (56 centímetros), cor dos olhos (pretos), cor do pelo (amarelo),temperamento (angelical) etc.
Em outros termos, o objeto é a instância de uma classe.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 16 / 28
Objetos vs ClassesExemplo
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 17 / 28
Mensagens
Objetos que interagem e comunicam se através de mensagens.As mensagens identificam os métodos a serem executados no objeto receptorPara invocar um método de um objeto, deve-se enviar uma mensagem.Para enviar uma mensagem é necessário:
identificar o objeto que receberá a mensagemidentificar o método que o objeto deve executarpassar os argumentos requeridos pelo método
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 18 / 28
MensagensExemplo
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 19 / 28
Definindo uma classe
Uma classe simples, que contém apenas um método.class Greeter {
public String sayHello(){String message = "Hello, World!";return message;
}}
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 20 / 28
Testando uma classe
class GreeterTest {
public static void main(String[] args){Greeter worldGreeter = new Greeter();System.out.println(worldGreeter.sayHello());
}}
classe testeUma classe teste constrói um ou mais objetos da classe que está sendo testada, e invoca osmétodos a serem testados.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 21 / 28
Variáveis de instância
Variáveis de instânciaUm objeto utiliza variáveis de instância para armazenar seu estado. O estado de um objeto é oconjunto de valores que determina como um objeto reage às chamadas de métodos. Semvariáveis de instância, os objetos iram responder iguais:
Greeter greeter1 = new Greeter();Greeter greeter2 = new Greeter();
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 22 / 28
Variáveis de instância
class Greeter{...private String name;...
}
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 23 / 28
Variáveis de instânciaModificando o método
public String sayHello(){String message = "Hello, " + this.name + "!";return message;
}
Local vs InstânciaA Variável Local (message) pertence a um método individual, e só pode ser acessada nométodo em que for declarada. A Variável de Instância (name) pertence a um objeto, podendoser utilizada em todos os métodos de sua classe.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 24 / 28
Construtores
Os construtores contém instruções e parâmetros para inicializar objetos, ou seja, modificaro seu estado.O nome do construtor é sempre igual ao nome da classe.O operador new invoca o construtor.
Greeter worldGreeter = new Greeter("World");Greeter sergioGreeter = new Greeter("Sergio");
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 25 / 28
Construtores
public Greeter(String aName){this.name = aName;
}
Construtores não são métodosEles não tem tipo de retorno e não se pode invocar um construtor sobre um objeto existente.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 26 / 28
Atividade
Teste a classe modificada.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 27 / 28
Bibliografia
D. Flanagan.Java in a Nutshell."O’Reilly Media, Inc.", 2005.
A. Shalloway and J. R. Trott.Design patterns explained: a new perspective on object-oriented design.Pearson Education, 2004.
D. A. Watt, W. Findlay, and J. Hughes.Programming language concepts and paradigms, volume 234.Prentice Hall Englewood Cliffs, 1990.
Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 28 / 28