le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
L'incapsulamento è una delle tre caratteristiche fondamentali della programmazione orientata agli oggetti (OOP) (incapsulamento, ereditarietà, polimorfismo). Si riferisce alla combinazione di dati (proprietà) e metodi (funzioni) per gestire questi dati in un'unità indipendente (classe), nascondendo il più possibile i dettagli interni dell'oggetto ed esponendo solo l'interfaccia al mondo esterno. Lo scopo è proteggere i dati dell'oggetto, impedire al codice esterno di accedere direttamente alle strutture dati interne dell'oggetto, ridurre gli errori e semplificare la complessità.
Utilizzando la classe : quando si definisce una classe, impostare i membri dati (proprietà) come privati o protetti e impostare i metodi per gestire questi dati come pubblici. In questo modo il codice esterno non può accedere direttamente ai membri privati della classe, ma può accedervi solo indirettamente tramite metodi pubblici.
modificatore di accesso:
public
: Accessibile da qualsiasi codice esterno.protected
: è possibile accedervi solo nella classe stessa e nelle classi derivate (sottoclassi).private
: è possibile accedervi solo all'interno della classe stessa, non nelle classi derivate.Costruttore e distruttore : Inizializza l'oggetto tramite il costruttore e ripulisci le risorse occupate dall'oggetto tramite il distruttore. Fanno anche parte dell'incapsulamento perché controllano il ciclo di vita dell'oggetto.
Di seguito è riportato un semplice esempio di wrapper C++ che mostra aRectangle
Implementazione della classe (rettangolare).
- #include <iostream>
-
- class Rectangle {
- private:
- double width; // 矩形的宽
- double height; // 矩形的高
-
- public:
- // 构造函数
- Rectangle(double w, double h) : width(w), height(h) {}
-
- // 设置宽度
- void setWidth(double w) {
- width = w;
- }
-
- // 获取宽度
- double getWidth() const {
- return width;
- }
-
- // 设置高度
- void setHeight(double h) {
- height = h;
- }
-
- // 获取高度
- double getHeight() const {
- return height;
- }
-
- // 计算面积
- double getArea() const {
- return width * height;
- }
- };
-
- int main() {
- Rectangle rect(5.0, 10.0);
- std::cout << "Rectangle area: " << rect.getArea() << std::endl;
- rect.setWidth(7.0);
- std::cout << "New Rectangle area: " << rect.getArea() << std::endl;
- return 0;
- }
In questo esempio,Rectangle
generalewidth
Eheight
Le proprietà vengono rese private e il codice esterno non può accedervi direttamente.Utilizziamo invece metodi pubblici comesetWidth
、getHeight
EgetArea
) per accedere e modificare queste proprietà private. Questo metodo implementa l'incapsulamento dei dati e fornisce un'interfaccia chiara per uso esterno.