C++中高级工程师入门指南-慕K

2024-05-25 18:46:41 浏览数 (1)

计模式是在软件开发过程中,经过实践积累而形成的一套解决常见问题的最佳实践方法。设计模式是软件开发中的宝贵工具,它们可以帮助开发人员更快速、更有效地解决常见问题,提高代码质量,减少重复劳动,并促进团队间的合作与共享。

C 面向对象设计模式简单介绍

  1. 工厂模式(Factory Pattern):通过提供一个创建对象的接口,而不指定实际创建的类来创建对象的模式。可以有简单工厂、工厂方法和抽象工厂等变体。
  2. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点来访问该实例。
  3. 适配器模式(Adapter Pattern):允许接口不兼容的类之间合作,将一个类的接口转换成客户希望的另一个接口。
  4. 装饰器模式(Decorator Pattern):允许向一个对象动态地添加新的功能,同时不改变其结构。
  5. 观察者模式(Observer Pattern):定义对象间的一对多依赖关系,使得当一个对象的状态发生改变时,
代码语言:javascript复制
#include <iostream>

// 基类 Shape
class Shape {
public:
    virtual void draw() = 0;
};

// 具体类 Circle
class Circle : public Shape {
public:
    void draw() override {
        std::cout << "Draw Circle" << std::endl;
    }
};

// 具体类 Rectangle
class Rectangle : public Shape {
public:
    void draw() override {
        std::cout << "Draw Rectangle" << std::endl;
    }
};

// 具体类 Triangle
class Triangle : public Shape {
public:
    void draw() override {
        std::cout << "Draw Triangle" << std::endl;
    }
};

// 工厂类 ShapeFactory
class ShapeFactory {
public:
    static Shape* createShape(const std::string& type) {
        if (type == "Circle") {
            return new Circle();
        } else if (type == "Rectangle") {
            return new Rectangle();
        } else if (type == "Triangle") {
            return new Triangle();
        }

        return nullptr;
    }
};

// 客户端代码
int main() {
    Shape *circle = ShapeFactory::createShape("Circle");
    Shape *rectangle = ShapeFactory::createShape("Rectangle");
    Shape *triangle = ShapeFactory::createShape("Triangle");

    circle->draw();
    rectangle->draw();
    triangle->draw();

    delete circle;
    delete rectangle;
    delete triangle;

    return 0;
}

C 面向对象的基础

C 是一种支持多种编程范式的语言,其中面向对象编程(Object-Oriented Programming,OOP)是C 的核心特性之一。面向对象编程是一种以数据为中心的编程范式,它将数据和处理数据的方法结合在一起,形成对象。以下是C 面向对象编程的一些基础概念:

  1. 类(Class) 类是创建对象的蓝图或模板,它定义了对象的属性(数据成员)和行为(成员函数)。类可以看作是一个逻辑实体,它封装了数据和操作这些数据的函数。
代码语言:javascript复制
class MyClass {
public:
    int myData; // 公有数据成员
    void myFunction(); // 公有成员函数
private:
    int privateData; // 私有数据成员
};
  1. 对象(Object) 慕课C 中高级工程师中,对象是根据类创建的实例。每个对象都拥有类中定义的属性和方法,并且可以独立于其他对象存在。
代码语言:javascript复制
MyClass myObject; // 创建MyClass的一个对象
  1. 构造函数(Constructor) 构造函数是一种特殊的成员函数,用于在创建对象时初始化对象。它与类名相同,没有返回类型,也不能指定参数模式。
代码语言:javascript复制
class MyClass {
public:
    MyClass() { // 构造函数
        // 初始化代码
    }
};
  1. 析构函数(Destructor) 析构函数与构造函数相对应,它在对象生命周期结束时被调用,用于执行清理工作。析构函数也没有返回类型,并且与类名相同,但在前面加上波浪号(~)。
代码语言:javascript复制
class MyClass {
public:
    ~MyClass() { // 析构函数
        // 清理代码
    }
};
  1. 成员函数(Member Function) 成员函数是定义在类内部的函数,它们可以访问类的私有成员。成员函数可以是公有的(public)或私有的(private)。
代码语言:javascript复制
class MyClass {
public:
    void myFunction() {
        // 可以访问类的成员变量和其它成员函数
    }
};
  1. 数据封装(Data Encapsulation) 封装是将对象的数据(属性)和行为(方法)组合在一起,并隐藏内部细节,只提供必要的接口。封装可以通过访问修饰符(public, private, protected)实现。
  2. 继承(Inheritance) 继承是一种机制,允许一个类(子类或派生类)继承另一个类(基类或父类)的属性和方法。这支持代码复用并可以建立类之间的层次结构。
代码语言:javascript复制
class BaseClass {
};

class DerivedClass : public BaseClass { // 公有继承
    // 继承了BaseClass的成员
};
  1. 多态(Polymorphism) 多态是指允许不同类的对象对同一消息做出响应的能力,但具体采用哪个类的方法取决于对象的实际类型。多态可以通过虚函数(virtual functions)和函数重载(overloading)实现。
代码语言:javascript复制
class BaseClass {
public:
    virtual void doSomething() {
        // 基类的实现
    }
};

class DerivedClass : public BaseClass {
public:
    void doSomething() override { // 重写基类函数
        // 派生类的实现
    }
};
  1. 抽象类(Abstract Class) 抽象类是不能被实例化的类,它通常包含至少一个纯虚函数。抽象类用于定义其他类的接口。
代码语言:javascript复制
class AbstractClass {
public:
    virtual void pureVirtualFunction() = 0; // 纯虚函数
};

慕课C 中高级工程师,面向对象编程的这些概念提供了一种强大的工具,用于设计复杂软件系统,使得代码更加模块化、易于理解和维护。C 的面向对象特性还支持其他高级概念,如模板(templates)、异常处理(exception handling)和命名空间(namespaces),这些都有助于构建大型和复杂的软件应用程序。

c++

0 人点赞