Souza Lucas - Ruby: Aprenda a programar na linguagem mais divertida стр 10.

Шрифт
Фон

Portanto, não deixe dúvidas para trás, se preciso, volte e leia novamente partes

que você julga necessário antes de prosseguirmos.

25

Capítulo 3

O começo da nossa aplicação

Nos capítulos anteriores, aprendemos algumas funcionalidades básicas da lingua-

gem Ruby. E, como já vimos, uma das suas principais características é ser orientada

a objetos. Neste capítulo focaremos na criação de classes, métodos e objetos usando

todo o poder que a linguagem nos proporciona.

Começaremos construindo uma aplicação que servirá de base para os próximos

capítulos do livro. Portanto, é interessante que você faça os códigos e entenda os

conceitos explicados neste capítulo.

Existem vários assuntos que poderíamos abordar e neste livro construiremos

uma aplicação para controlar uma loja de livros. Controlaremos o seu estoque, quais

são os clientes da loja, faremos algumas vendas e guardaremos todas estas informa-

ções em disco, utilizando a API de arquivos do Ruby.

A grande pergunta que sempre fica quando criamos uma aplicação é: por onde

começar? Temos muitas opções. Podemos iniciar o desenvolvimento pelo domínio

(criando classes), pela interface do usuário, pelo banco de dados e assim por diante.

No nosso caso, começaremos desenvolvendo as classes de domínio da aplicação.

3.1. A definição da classe Livro

Casa do Código

3.1

A definição da classe Livro

Se vamos construir uma aplicação que gerencia uma loja de livros, precisamos man-

ter os dados dos nossos livros em algum lugar. Pensando brevemente neles, teremos:

nome = "Linguagem Ruby"

isbn = "123-45678901-2"

numero_paginas = 245

preco = 69.90

Todos os livros da nossa loja estão com um desconto pré-definido:

desconto = 0.1

Agora precisamos saber qual é o preço do nosso livro com desconto. Uma conta

bem simples pode nos devolver qual o valor com o desconto:

nome = "Linguagem Ruby"

isbn = "342-65675756-1"

numero_paginas = 245

preco = 69.90

desconto = 0.1

preco_com_desconto = preco - (preco * desconto)

O problema deste código, todo espalhado, é que, quando precisarmos calcular

o desconto de qualquer livro, teremos que repetir a mesma operação. Se em algum

momento esta lógica tiver que ser alterada, vamos ter que mudar em N lugares do

nosso código.

Podemos voltar um pouco no tempo e imitar as antigas e clássicas funções que

temos em linguagens como C.

def preco_com_desconto(preco, desconto)

preco - (preco * desconto)

end

Agora, toda vez que precisarmos efetuar o cálculo do preço com desconto, cha-

mamos a função preco_com_desconto passando o preco e o desconto:

nome = "Linguagem Ruby"

isbn = "342-65675756-1"

28

Casa do Código

Capítulo 3. O começo da nossa aplicação

numero_paginas = 245

preco = 69.90

desconto = 0.1

puts preco_com_desconto(preco, desconto) # => 62.90

Caso haja necessidade de alterar algum outro livro, devemos criar as va-

riáveis referentes as informações deste outro livro e então chamar o método

preco_com_desconto para sabermos qual o novo valor:

nome = "Test Driven Development: Teste e Design no Mundo Real"

isbn = "342-65675751-1"

numero_paginas = 212

preco = 89.90

desconto = 0.1

puts

preco_com_desconto(preco, desconto) # => 80.90

O que temos aqui é um típico caso onde os dados e a sua manipulação estão

separados, quando deveriam estar juntos. Esse é um dos princípios por trás da Ori-

entação à Objetos, unir dados e a manipulação dos mesmos, encapsulando o acesso.

A maneira de fazermos isso é colocando este código dentro de uma classe e repre-

sentar cada um dos livros da nossa loja como uma instância desta classe.

Para criar classes usando Ruby, basta usar a palavra reservada class e delimitar

o final da sua classe com a palavra reservada end.

class Livro

end

29

3.1. A definição da classe Livro

Casa do Código

Constantes

O nome de uma classe deve obrigatoriamente começar com uma letra

maiúscula e as outras minúsculas. Por exemplo: Livro. Repare que o

nome Livro não é uma String, já que não está entre aspas ou den-

tro do delimitador de String. O nome Livro é uma constante, que

definimos quando criamos a nossa classe.

Todos os tipos existentes no Ruby como String, Integer, Time

etc, são constantes.

Caso o nome da sua constante seja composto, usamos a notação camel

case, por exemplo: UnidadeDeEstoque.

O que criamos foi uma abstração de um Livro ou seja, um template que dirá do

que um livro é composto. A partir da classe, que é o template, precisamos criar um

novo livro, onde poderemos dizer quais são suas características, como título, isbn,

autor e assim por diante. Para criarmos cada um, usaremos a palavra new:

teste_e_design = Livro.new

web_design_responsivo = Livro.new

Quando usamos o new em uma classe, estamos criando uma instância dela (di-

zemos também que estamos criando um objeto daquele tipo). No código anterior,

criamos duas instâncias e as referenciamos através das variáveis teste_e_design

e web_design_responsivo. Nós não provemos nenhum tipo de informação so-

bre estes livros, como o nome do autor, isbn, quantidade de páginas etc. Esse é um

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке