English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Programação Orientada a Objetos no Rust

Linguagens de programação orientadas a objetos geralmente implementam encapsulamento e herança de dados e podem chamar métodos com base em dados.

Rust não é uma linguagem de programação orientada a objetos, mas essas funcionalidades podem ser implementadas.

Encapsulamento

Encapsulamento é a estratégia de exibição externa, que pode ser implementada através do mecanismo de módulos em Rust, onde cada arquivo Rust pode ser visto como um módulo, e os elementos dentro do módulo podem ser explicitamente expostos ao público através da palavra-chave pub. Isso é detalhado na seção "Organização e Gestão".

"Classe" é um conceito frequentemente usado em linguagens de programação orientadas a objetos. "Classe" encapsula dados, abstração de entidades de dados do mesmo tipo e seus métodos de processamento. Em Rust, podemos usar estruturas ou enum para implementar funcionalidades de classe:

pub struct ClassName {}}
    pub campo: Tipo,
}
pub impl ClassName {
    fn some_method(&self) {
        // Corpo da função do método
    }
}
pub enum EnumName {
    A,
    B,
}
pub impl EnumName {
    fn some_method(&self) {
    } 
}

A seguir, construa uma classe completa:

second.rs
pub struct ClassName {}}
    campo: i32,
}
impl ClassName {
    pub fn new(value: i32) -> ClassName {
        ClassName {
            campo: valor
        }
    }
    pub fn public_method(&self) {
        println!("from método público");
        self.private_method();
    }
    fn private_method(&self) {
        println!("from método privado");
    }
}
main.rs
mod second;
use second::ClassName;
fn main() {
    let object = ClassName::new(1024);
    object.public_method();
}

Saída do Resultado:

from método público
from método privado

Herança

Praticamente todas as linguagens de programação orientadas a objetos podem implementar "herança" e usar o termo "extend" para descrever essa ação.

A herança é a implementação da ideia de polimorfismo, onde o polimorfismo se reflete na capacidade da linguagem de programação de lidar com código para vários tipos de dados. No Rust, o polimorfismo é implementado através de traits. Detalhes sobre traits podem ser encontrados no capítulo "Traits". No entanto, traits não podem implementar a herança de atributos, apenas funções semelhantes a "interfaces", então é melhor definir um exemplo de "classe pai" no "subclasse" se você quiser herdar métodos de uma classe.

Em resumo, o Rust não oferece doçura de sintaxe para herança, nem há meios oficiais de herança (igual ao herança de classes no Java), mas a sintaxe flexível ainda pode implementar funções relacionadas.