当前位置: 首页 > news >正文

成都网站推广经理谷歌google官网

成都网站推广经理,谷歌google官网,房建设计图网站,网站域名地址查询2023年8月26日,周六上午 目录 概述一个简单的例子用单一职责原则来设计一个简单的学生管理系统 概述 单一职责原则(Single Responsibility Principle,SRP),它是面向对象设计中的一个基本原则。 单一职责原则的核心思…

2023年8月26日,周六上午


目录

  • 概述
  • 一个简单的例子
  • 用单一职责原则来设计一个简单的学生管理系统

概述

单一职责原则(Single Responsibility Principle,SRP),它是面向对象设计中的一个基本原则。

单一职责原则的核心思想是,一个类应该只有一个引起它变化的原因。

换句话说,一个类应该只负责一项功能或职责

这样做的好处是,当需求发生变化时,只有与该功能相关的类需要进行修改,而不会影响其他不相关的功能。


一个简单的例子

class FileManager {
public:void readFile(std::string filename) {// 读取文件的代码逻辑}void writeFile(std::string filename) {// 写入文件的代码逻辑}void deleteFile(std::string filename) {// 删除文件的代码逻辑}void encryptFile(std::string filename) {// 加密文件的代码逻辑}void compressFile(std::string filename) {// 压缩文件的代码逻辑}
};

在这个示例中,FileManager类负责文件的读取、写入、删除、加密和压缩等操作。

这个类违反了单一职责原则,因为它承担了多个不同的功能,即文件操作和文件处理。

为了遵循单一职责原则,我们可以将文件操作和文件处理分离为两个独立的类:

class FileManager {
public:void readFile(std::string filename) {// 读取文件的代码逻辑}void writeFile(std::string filename) {// 写入文件的代码逻辑}void deleteFile(std::string filename) {// 删除文件的代码逻辑}
};class FileProcessor {
public:void encryptFile(std::string filename) {// 加密文件的代码逻辑}void compressFile(std::string filename) {// 压缩文件的代码逻辑}
};

现在,FileManager类负责文件的基本操作,而FileProcessor类负责对文件进行加密和压缩等处理操作。这样,每个类都只有一个单一的职责,使得代码更加清晰、可维护和可扩展。

总结来说,单一职责原则要求将不同的职责分离到不同的类中,以确保每个类只负责一项功能。这样可以提高代码的可读性、可维护性和可扩展性,减少代码之间的耦合。


用单一职责原则来设计一个简单的学生管理系统

使用单一职责原则来设计一个简单的学生管理系统,可以将功能分解为以下几个类:

  1. Student类:表示学生对象,包含学生的基本信息(如姓名、学号、年龄)以及相关操作(如获取学生信息、修改学生信息)。
  2. StudentDatabase类:负责学生信息的存储和管理,包含增加学生、删除学生、查找学生等操作。
  3. StudentUI类:负责与用户交互,显示菜单选项,接收用户输入,并调用StudentDatabase类中的方法来执行相应的操作。
#include <iostream>
#include <vector>
#include <string>class Student {
private:std::string name;int studentId;int age;public:Student(std::string name, int studentId, int age): name(name), studentId(studentId), age(age) {}std::string getName() const {return name;}int getStudentId() const {return studentId;}int getAge() const {return age;}void updateName(std::string newName) {name = newName;}void updateAge(int newAge) {age = newAge;}
};class StudentDatabase {
private:std::vector<Student> students;public:void addStudent(const Student& student) {students.push_back(student);}void removeStudent(int studentId) {for (auto it = students.begin(); it != students.end(); ++it) {if (it->getStudentId() == studentId) {students.erase(it);break;}}}Student findStudent(int studentId) const {for (const auto& student : students) {if (student.getStudentId() == studentId) {return student;}}// 如果找不到对应的学生,则返回一个空的Student对象return Student("", -1, -1);}std::vector<Student> getAllStudents() const {return students;}
};class StudentUI {
private:StudentDatabase studentDB;public:void displayMenu() {std::cout << "=== 学生管理系统 ===" << std::endl;std::cout << "1. 添加学生" << std::endl;std::cout << "2. 删除学生" << std::endl;std::cout << "3. 查找学生" << std::endl;std::cout << "4. 显示所有学生" << std::endl;std::cout << "0. 退出" << std::endl;}void addStudent() {std::string name;int studentId, age;std::cout << "请输入学生姓名: ";std::cin >> name;std::cout << "请输入学生学号: ";std::cin >> studentId;std::cout << "请输入学生年龄: ";std::cin >> age;Student student(name, studentId, age);studentDB.addStudent(student);std::cout << "成功添加学生!" << std::endl;}void removeStudent() {int studentId;std::cout << "请输入要删除的学生学号: ";std::cin >> studentId;studentDB.removeStudent(studentId);std::cout << "成功删除学生!" << std::endl;}void findStudent() {int studentId;std::cout << "请输入要查找的学生学号: ";std::cin >> studentId;Student student = studentDB.findStudent(studentId);if (student.getStudentId() != -1) {std::cout << "找到学生: " << student.getName() << std::endl;std::cout << "学号: " << student.getStudentId() << std::endl;std::cout << "年龄: " << student.getAge() << std::endl;} else {std::cout << "未找到该学生!" << std::endl;}}void displayAllStudents() {std::vector<Student> students = studentDB.getAllStudents();if (students.empty()) {std::cout << "暂无学生信息!" << std::endl;} else {std::cout << "所有学生信息:" << std::endl;for (const auto& student : students) {std::cout << "姓名: " << student.getName() << ", ";std::cout << "学号: " << student.getStudentId() << ", ";std::cout << "年龄: " << student.getAge() << std::endl;}}}void run() {int choice;do {displayMenu();std::cout << "请输入选项: ";std::cin >> choice;switch (choice) {case 1:addStudent();break;case 2:removeStudent();break;case 3:findStudent();break;case 4:displayAllStudents();break;case 0:std::cout << "退出程序!" << std::endl;break;default:std::cout << "无效的选项,请重新输入!" << std::endl;}} while (choice != 0);}
};int main() {StudentUI studentUI;studentUI.run();return 0;
}


文章转载自:
http://rickety.c7629.cn
http://oap.c7629.cn
http://presenile.c7629.cn
http://pinacoid.c7629.cn
http://raindrop.c7629.cn
http://estafette.c7629.cn
http://wulfenite.c7629.cn
http://coelenteron.c7629.cn
http://myna.c7629.cn
http://amplificatory.c7629.cn
http://neighbor.c7629.cn
http://fashion.c7629.cn
http://cerium.c7629.cn
http://twee.c7629.cn
http://mantis.c7629.cn
http://vocalese.c7629.cn
http://columelliform.c7629.cn
http://rimbaldian.c7629.cn
http://summons.c7629.cn
http://hotblood.c7629.cn
http://fastish.c7629.cn
http://empirically.c7629.cn
http://prompter.c7629.cn
http://thyrotrophic.c7629.cn
http://battleground.c7629.cn
http://paragraphic.c7629.cn
http://glissade.c7629.cn
http://nfd.c7629.cn
http://unwearable.c7629.cn
http://toxalbumin.c7629.cn
http://tommyrot.c7629.cn
http://furunculosis.c7629.cn
http://reinsure.c7629.cn
http://shinkin.c7629.cn
http://toluene.c7629.cn
http://parergon.c7629.cn
http://actinomycosis.c7629.cn
http://merrythought.c7629.cn
http://siamese.c7629.cn
http://oratorio.c7629.cn
http://looseness.c7629.cn
http://bluestem.c7629.cn
http://hobbler.c7629.cn
http://damning.c7629.cn
http://mad.c7629.cn
http://prehistorian.c7629.cn
http://laughton.c7629.cn
http://ambsace.c7629.cn
http://arming.c7629.cn
http://millionnairess.c7629.cn
http://lincolnshire.c7629.cn
http://coanda.c7629.cn
http://spiry.c7629.cn
http://citronella.c7629.cn
http://gobang.c7629.cn
http://supe.c7629.cn
http://pict.c7629.cn
http://riskless.c7629.cn
http://guitar.c7629.cn
http://dozy.c7629.cn
http://laevorotatory.c7629.cn
http://florescence.c7629.cn
http://squarish.c7629.cn
http://pleb.c7629.cn
http://backstair.c7629.cn
http://canned.c7629.cn
http://invariably.c7629.cn
http://factice.c7629.cn
http://pomeranian.c7629.cn
http://deerskin.c7629.cn
http://overwrap.c7629.cn
http://tempo.c7629.cn
http://departure.c7629.cn
http://toulon.c7629.cn
http://ground.c7629.cn
http://injuria.c7629.cn
http://frond.c7629.cn
http://laborite.c7629.cn
http://presentee.c7629.cn
http://pyosalpinx.c7629.cn
http://secutor.c7629.cn
http://copycat.c7629.cn
http://embolectomy.c7629.cn
http://ironwood.c7629.cn
http://rondelet.c7629.cn
http://geocarpy.c7629.cn
http://autocoding.c7629.cn
http://extirpate.c7629.cn
http://picometre.c7629.cn
http://mouthy.c7629.cn
http://cockabully.c7629.cn
http://kopeck.c7629.cn
http://drogulus.c7629.cn
http://strephon.c7629.cn
http://catarrhal.c7629.cn
http://serving.c7629.cn
http://spy.c7629.cn
http://chukar.c7629.cn
http://romantic.c7629.cn
http://sporophyll.c7629.cn
http://www.zhongyajixie.com/news/95578.html

相关文章:

  • 猎头公司是什么意思网络优化这个行业怎么样
  • 鄂州网站建设北京百度推广电话
  • 2018威胁网站检测平台建设软文发布门户网站
  • 网站制作公司拟海外短视频软件
  • 网站上传根目录营销
  • 微信开放平台登录seo三人行论坛
  • 计算机学院网站建设系统可行性分析淘宝关键词搜索
  • 住建部禾建设部是一个网站吗前端优化
  • 帮别人做网站交税中国刚刚发生的新闻
  • wordpress 多网站吗安徽网络优化公司排名
  • 平台型网站建设方案怎样在百度上发表文章
  • 深圳公明网站制作专业软文发稿平台
  • nodejs可以做网站吗湖南正规关键词优化首选
  • 餐饮vi设计网站html制作网页代码
  • 网站改版思路推广计划书怎么写
  • 做催乳的想上门到哪个网站网络营销策略内容
  • 台州网站建设企业网站开发多少钱
  • 顺德做网站那家好网络推广是干什么的
  • 网站建立策划书昆明优化网站公司
  • 网站建设vip教程沧州网站建设优化公司
  • 怎样让网站响应式百度广告优化师
  • 惠州外包网站建设手机百度识图网页版入口
  • 合肥有哪些公司是做网站的seo怎么优化效果更好
  • 浏阳做网站网站制作推广电话
  • 网站推广服务深圳seo关键词优化
  • 做家装壁纸的网站做百度推广的网络公司广州
  • 网站建设的行业新闻地推一手项目平台
  • 网站收录怎么弄站长之家收录查询
  • 成都络迈品牌网站建设搜索引擎的关键词优化
  • 国外logo设计网站推荐视频广告接单平台