conceitos básicos de orientação a objetos

28
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

Upload: sergio-souza-costa

Post on 13-Jan-2017

36 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Conceitos básicos de orientação a objetos

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

Page 2: Conceitos básicos de orientação a objetos

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

Page 3: Conceitos básicos de orientação a objetos

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

Page 4: Conceitos básicos de orientação a objetos

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

Page 5: Conceitos básicos de orientação a objetos

IntroduçaoMudança de enfoque

Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 5 / 28

Page 6: Conceitos básicos de orientação a objetos

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

Page 7: Conceitos básicos de orientação a objetos

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

Page 8: Conceitos básicos de orientação a objetos

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

Page 9: Conceitos básicos de orientação a objetos

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

Page 10: Conceitos básicos de orientação a objetos

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

Page 11: Conceitos básicos de orientação a objetos

Objeto - Exemplo

Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 11 / 28

Page 12: Conceitos básicos de orientação a objetos

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

Page 13: Conceitos básicos de orientação a objetos

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

Page 14: Conceitos básicos de orientação a objetos

Objeto - Encapsulamento

Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 14 / 28

Page 15: Conceitos básicos de orientação a objetos

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

Page 16: Conceitos básicos de orientação a objetos

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

Page 17: Conceitos básicos de orientação a objetos

Objetos vs ClassesExemplo

Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 17 / 28

Page 18: Conceitos básicos de orientação a objetos

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

Page 19: Conceitos básicos de orientação a objetos

MensagensExemplo

Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 19 / 28

Page 20: Conceitos básicos de orientação a objetos

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

Page 21: Conceitos básicos de orientação a objetos

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

Page 22: Conceitos básicos de orientação a objetos

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

Page 23: Conceitos básicos de orientação a objetos

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

Page 24: Conceitos básicos de orientação a objetos

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

Page 25: Conceitos básicos de orientação a objetos

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

Page 26: Conceitos básicos de orientação a objetos

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

Page 27: Conceitos básicos de orientação a objetos

Atividade

Teste a classe modificada.

Sérgio Souza Costa (Universidade Federaldo Maranhão) Paradigmas de Programação 24 de outubro de 2016 27 / 28

Page 28: Conceitos básicos de orientação a objetos

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