Programação orientada a objetos representa o mundo real. Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Em orientação a objetos, uma classe é uma estrutura que abstrai um conjunto de objetos com características similares. Uma classe define o comportamento de seus objetos através de métodos e os estados possíveis destes objetos através de atributos. Em outros termos, uma classe descreve os serviços providos por seus objetos e quais informações eles podem armazenar.
Porque Usar Classes?
No mundo real, muitas vezes você vai encontrar muitos objetos individuais todos da mesma espécie. Pode haver milhares de outros bebês na existência, todos parecidos. Cada bebê foi construído a partir do mesmo conjunto de projetos(DNA) e, portanto, contém os mesmos componentes. Em termos de orientação a objetos, dizemos que o seu bebê é uma instância da classe de objetos conhecidos como bebê. Uma classe é o modelo a partir do qual objetos individuais são criados. Criando a classe bebê teremos um objeto bebê com seus atributos definidos:
Classes Ruby
Em Ruby tudo é um objeto, então podemos dizer que tudo tem uma classe, deste modo Ruby possui alguns conceitos diferentes de outras linguagens de programação hibridas como por exemplo C++ e Java. Entretanto uma classe escrita em Ruby também possui os conceitos básicos da linguagem orientada a objeto e possui basicamente 3 partes distintas:
-
A Definição da classe (Nome da classe: Bebe).
-
Os membros da classe (Atributos da classe: nome, peso, tamanho).
-
Construtor da classe (Método: initialize).
Exemplo:
Neste exemplo criamos uma classe chamada Bebe e criamos um construtor para inicializar os valores para cada bebê que for instanciado, e também utilizamos um recurso que nos permite não inicializar valores na classe simulando um construtor Overload, no qual permite instanciar um objeto Bebe com valores ou sem valores definidos podendo alimenta-los através de métodos ou atributos a qualquer hora.
Ruby
#!/usr/bin/env ruby # Desenvolvimento Aberto # Classes.rb class Bebe # Define atributos attr_accessor :nome, :peso, :tamanho # Define construtor da classe (Efeito Overload) def initialize (nome = nil, peso=nil, tamanho=nil) @nome = nome @peso = peso @tamanho = tamanho end end # Cria instância do Bebê construtor defindo b1 = Bebe.new("Daniel", "3.5", "36") # Cria instância do Bebê construtor overload b2 = Bebe.new # Alimenta valores nos atributos publicos b2.nome="Sabrina" b2.peso="2.7" b2.tamanho="32" # Imprime Bebês puts "Bebê 1:", "Nome: " + b1.nome, "Peso: " + b1.peso, "Tamanho: " + b1.tamanho + "cm" puts "\nBebê 2:", "Nome: " + b2.nome, "Peso: " + b2.peso, "Tamanho: " + b2.tamanho + "cm"