软件工程小记——面向对象设计

本文深入探讨了面向对象设计的任务,介绍了系统物理模型的五个层次和四个组成部分,阐述了设计原则,包括分层和各层间通讯的概念。同时,文章详细讲解了信息系统的架构设计,以及类与对象设计的步骤和目标。

第九章 面向对象设计

1.面向对象设计的任务
    面向对象设计的任务,就是在面向对象分析的基础上,根据用户对系统功能和操作使用方面的需求及技术、经济
    和运行环境等方面的条件,继续运用面向对象的基本思想与概念,进一步细化、改进和扩展,通过系统分析得到的系统
    逻辑模型,确立系统物理实现的技术方案,即建立系统物理模型。

2.面向对象设计建立的系统物理模型由5个层次和4个部分组成:
    5个层次:
        主题层、结构层、对象层、属性层、服务层。
    4个部分:
        问题空间部分:根据用户对系统的功能需求确定解空间;
        人机交互部分:根据用户对系统的操作使用方面的需求确定系统的表示层;
        任务管理部分:对系统功能的串行调用过程,称为系统任务。任务管理设计的目的就是确定系统的所有串行调用过程。
        数据管理部分:确定系统数据存数结构;
        
3.面向对象设计的原则
    a.分层:
        分层的思路是将系统按功能职责进行划分,将同一类职责的功能抽象为一层。
        表示层——用户界面;
        业务层——业务处理流程;
        数据层——持久化存储;
    b.各层之间通讯:
        表示层——>业务层——>数据层
        
4.信息系统的架构设计
    a.分为三层:用户界面层、业务层、数据访问层。
    b.将各层中的一些公共部分提取出来:权限管理、异常处理,这样得到信息系统包。
    c.信息系统包:
        用户界面包:
        业务处理包:
        数据访问包:
        权限管理包:
        异常处理包:
        架构的类图;
        结构的动态图:
        
5.类与对象的设计
    a.类设计的目的是在架构设计的基础上,将分析模型转换成程序设计语言可以实现的对象类和对象的静态、动态关系。
    b.类设计的步骤:
        第一步:作为类设计的第一步是查找类,可以从分析模型中查找;
        第二步:优化类,对具有共同特征的类进行抽象,得出一个超类接口;
        第三步:建立类之间的静态联系;
        第四步:建立类之间的动态联系;
        第五步:尽量符合设计原则(七大原则),尽量使用设计模式。

接入第三方登录是让用户方便快捷地使用已有账号登录你的网站或应用程序,提高用户体验的一种方式。本文将介绍如何使用 PHP 实现微信公众号第三方登录。 1. 获取微信授权 首先,需要获取微信用户的授权。具体步骤如下: 1)引导用户打开微信授权页面: ```php $appid = 'your_appid'; $redirect_uri = urlencode('http://yourdomain.com/callback.php'); $scope = 'snsapi_userinfo'; $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=$scope&state=STATE#wechat_redirect"; header("Location: $url"); ``` 其中,`$appid` 是你的微信公众号的 AppID,`$redirect_uri` 是授权后回调的 URL,`$scope` 是授权作用域,可以是 `snsapi_base` 或 `snsapi_userinfo`,`$state` 是自定义参数,用于防止 CSRF 攻击。 2)获取授权码: 用户同意授权后,会重定向到 `$redirect_uri` 指定的 URL,带上授权码 `code` 和 `state` 参数。 ```php $code = $_GET['code']; $state = $_GET['state']; ``` 3)获取 access_token 和 openid: 使用授权码 `code` 获取 `access_token` 和 `openid`。 ```php $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code"; $response = file_get_contents($access_token_url); $result = json_decode($response, true); $access_token = $result['access_token']; $openid = $result['openid']; ``` 其中,`$secret` 是你的微信公众号的 AppSecret。 2. 获取用户信息 获取到 `access_token` 和 `openid` 后,可以使用以下代码获取用户信息: ```php $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN"; $response = file_get_contents($userinfo_url); $userinfo = json_decode($response, true); ``` 其中,`$userinfo` 包含用户的昵称、头像等信息。 3. 将用户信息保存到数据库 最后,将获取到的用户信息保存到数据库中,以便下次使用时快速登录。 ```php // 连接数据库 $con = mysqli_connect('localhost', 'username', 'password', 'database'); mysqli_set_charset($con, "utf8"); // 查询用户是否已存在 $sql = "SELECT * FROM users WHERE openid='$openid'"; $result = mysqli_query($con, $sql); if (mysqli_num_rows($result) == 0) { // 用户不存在,插入新用户信息 $nickname = mysqli_real_escape_string($con, $userinfo['nickname']); $headimgurl = mysqli_real_escape_string($con, $userinfo['headimgurl']); $sql = "INSERT INTO users (openid, nickname, headimgurl) VALUES ('$openid', '$nickname', '$headimgurl')"; mysqli_query($con, $sql); } // 保存用户登录状态 $_SESSION['openid'] = $openid; ``` 以上就是使用 PHP 实现微信公众号第三方登录的步骤。需要注意的是,为了确保安全性,应该对用户输入的数据进行过滤和验证,防止 SQL 注入和 XSS 攻击等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值