Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta...

15
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Programação de Computadores Mais objetos e organização o programa Copyright © 2013 IFRN

Transcript of Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta...

Page 1: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

INSTITUTO FEDERAL DEEDUCAÇÃO, CIÊNCIA E TECNOLOGIARIO GRANDE DO NORTE

Programação de Computadores

Mais objetos eorganização o programa

Copyright © 2013 IFRN

Page 2: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

O que veremos hoje?Objetos compostos de objetosOrganizando o programa

a instrução requireExemplo

2

Page 3: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

ObjetosObjetos são compostos de objetos

Livro é composto de capítulosCasa é composta de quarto, sala, banheiro, etcCarro é composto de pneus, portas, motores, etcUma agenda é um conjunto contatos

Um atributo de um objeto é um outro objeto

3

Casa- suite- quarto- sala_de_jantar- sala_de_estar- cozinha- banheiro_social

Page 4: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

ObjetosUm triângulo pode ser definido a partir de 3 pontos no plano cartesiano

4

y

x(0,0)

(1,1)

(2,3)

(4,2)

Triangulo- ponto1- ponto2- ponto3

Ponto- cordenada_x- cordenada_y

Page 5: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

ObjetosUm triângulo pode ser definido a partir de 3 pontos no plano cartesiano

5

Triangulo- ponto1- ponto2- ponto3

Ponto- cordenada_x- cordenada_y

class Ponto def initialize (x,y) @cordenada_x = x @cordenada_y = y end ...end

class Triangulo def initialize(p1,p2,p3) @ponto1 = p1 @ponto2 = p2 @ponto3 = p3 end ...end

Page 6: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

ObjetosA composição de objetos é uma questão de “modelagem”

Pode haver mais de uma forma de modelar um problemaUma reta pode ser modelada:

Dois pontos (cordenada x,y) no plano cartesianoDois inteiros na equação ax+bAmbas estão corretas

6

y

x(0,0)

(1,1)

(4,2)

Page 7: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

Organizar o programa

7

Um programa pode ter muitas classesNecessário organizar em arquivos separados

Um arquivo por classe?Um arquivo por “grupo” de classesUm arquivos por método???? (exagero)Um diretório por grupo de classes e um arquivo por classe?

E se houver uma dependência entre uma classe/método de dois arquivos diferentes?ponto.rb e triangulo.rb

Page 8: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

Organização de programas

8

class Ponto def initialize (x,y) @cordenada_x = x @cordenada_y = y end ...end

class Triangulo def initialize(p1,p2,p3) @ponto1 = p1 @ponto2 = p2 @ponto3 = p3 end ...end

ponto.rb triangulo.rb

p1 = Ponto.new (1,1)p2 = Ponto.new (4,3)p3 = ......triangulo = Triangulo.new (p1,p2,p3)puts triangulo.distancia_origem

meu_programa.rb

Page 9: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

Organização de programas

8

class Ponto def initialize (x,y) @cordenada_x = x @cordenada_y = y end ...end

class Triangulo def initialize(p1,p2,p3) @ponto1 = p1 @ponto2 = p2 @ponto3 = p3 end ...end

ponto.rb triangulo.rb

O programa precisa das definições das classes Ponto e Triangulo

p1 = Ponto.new (1,1)p2 = Ponto.new (4,3)p3 = ......triangulo = Triangulo.new (p1,p2,p3)puts triangulo.distancia_origem

meu_programa.rb

Page 10: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

Organização de programas

9

require 'ponto'require 'triangulo'

p1 = Ponto.new (1,1)p2 = Ponto.new (4,3)p3 = ......

meu_programa.rbPara que o ruby conheça a classe Ponto e Triangulo

Informar no arquivo meu_programa.rb que o arquivo ponto.rb e triangulo.rb são requeridos (require)O .rb é opcionalRecomendado colocar no início do arquivo meu_programa.rb

Page 11: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

Organização de programas

9

require 'ponto'require 'triangulo'

p1 = Ponto.new (1,1)p2 = Ponto.new (4,3)p3 = ......

meu_programa.rbPara que o ruby conheça a classe Ponto e Triangulo

Informar no arquivo meu_programa.rb que o arquivo ponto.rb e triangulo.rb são requeridos (require)O .rb é opcionalRecomendado colocar no início do arquivo meu_programa.rb

O require ler o arquivo e processa as instruções

Page 12: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

Organizar programaOnde o ruby deve procurar os arquivos?

Necessário informar em quais diretórios o require deve procurarVariável global $LOAD_PATH

Array com os diretórios onde o require deve procurar os arquivosAdicionar diretório atual:$LOAD_PATH << '.'

10

$LOAD_PATH << '.'

require 'ponto'require 'triangulo'

p1 = Ponto.new (1,1)p2 = Ponto.new (4,3)p3 = ......

meu_programa.rb

Page 13: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

Organizar programaOnde o ruby deve procurar os arquivos?

Necessário informar em quais diretórios o require deve procurarVariável global $LOAD_PATH

Array com os diretórios onde o require deve procurar os arquivosAdicionar diretório atual:$LOAD_PATH << '.'

10

$LOAD_PATH << '.'

require 'ponto'require 'triangulo'

p1 = Ponto.new (1,1)p2 = Ponto.new (4,3)p3 = ......

meu_programa.rb

Page 14: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

Finalmente

11

$LOAD_PATH << '.'

require 'ponto'require 'triangulo'

p1 = Ponto.new (1,1)p2 = Ponto.new (4,3)p3 = ......triangulo = Triangulo.new (p1,p2,p3)puts triangulo.tipo

class Ponto def initialize (x,y) @cordenada_x = x @cordenada_y = y end ...end

class Triangulo def initialize(p1,p2,p3) @ponto1 = p1 @ponto2 = p2 @ponto3 = p3 end ...end

ponto.rb

triangulo.rb

meu_programa.rb

Page 15: Mais objetos e organização o programade objetos Livro é composto de capítulos Casa é composta de quarto, sala, banheiro, etc Carro é composto de pneus, portas, motores, etc Uma

/12

Dúvidas?12