面向对象四大特征-系统学习二

简介: 经历了三大结构的学习之后,对于事务本质的理解增加了很多的维度;进而开启了面向对象方法的研究。

一、背景介绍


经历了三大结构的学习之后,对于事务本质的理解增加了很多的维度;进而开启了面向对象方法的研究。


二、学习思路


1.绘制图

2.查阅资料、并完善图

3.编写代码

4.代码和图对比理解

5.过程中提出问题,用示例和书中的描述来解答问题


三、学习过程


1.整体梳理图


2021042614184254.png


2.代码(如下代码只是对于抽象封装的理解;继承、多态读者可自行实践感受)


package com.a4features;
import javax.swing.*;
import java.util.Scanner;
/**
 * 功能描述:面向对象抽象、封装的理解
 *
 * N+1过程的理解:改变事物中某一个原子粒度的量来对比其变化
 * 细小的改变却带来了举足轻重的意义
 *
 * @Author:makang
 * @Date: 2021/4/25 17:23
 */
public class testMainOperation {
    public static void main(String[] args) {
        //计算5和6的和
        //开始主题讨论:《从1.1 《版本1:计算5和6的和》中,这样极其简单的代码,你写的多吗?从中你又能发现什么?》
        test1();
        System.out.println();
        //简单的变化开始
        //主题讨论:《从版本1到版本2中代码发生了非常巨大的变化,来说说你发现的巨大变化都有哪些,以及你能由此想到的更深入的知识点还有哪些?》
        test2();
        System.out.println();
        //质的变化
        //《看到版本3之后,你想提什么样的问题?》
        test3();
        System.out.println();
        //变是永远不变的
        //《结合版本4的伪代码示例,对于版本4的命名:变是永远不变的,请你用不少于300字,来深入的探讨并描述一下你的感受》
        test4();
        System.out.println();
        //多此一举吗?
        //主题讨论:《看了版本5和版本4的代码示例,请用不少于200字,来描述一下它们之间这个巨大的变化》
        test5();
        System.out.println();
        //用户的需求又来了
        //《基于版本5的代码示例,用户又提出了新的需求(如版本6的代码示例),你帮忙想想,如何应对用户这种需求变化》
        test6();
        System.out.println();
        //用户的需求又又来了
        //《看了版本7的代码示例之后,发现程序员小哥硕果仅存的头发又少了,面对用户源源不断的需求变化,你作为一名高级软件工程师,该如何拯救这些代码?》
        test7();
    }
    public static void test1(){
        System.out.println(5+6);
    }
    public static void test2(){
        int a,b;
        a=5;
        b=6;
        //相对于test1将值的部分从下面的输出做了抽取,封装到了变量中
        System.out.println(a+b);
    }
    public static void test3() {
        int a,b,c;
        a=5;
        b=6;
        c = a+b;
        //相对于test2将计算逻辑进行了抽取,使得后续计算逻辑的改变不再影响下面的输出
        System.out.println(c);
    }
    public static void test4(){
        int a,b,c;
        a = 0;
        b = 0;
        //相对于test3,将a和b的值做成了控制台输入的方式,使得a和b的改变不再需要动代码,变得随心所欲
        System.out.println("test4请输入a和b的值:");
        Scanner scanner = new Scanner(System.in);
        int index = 1;
        while (true){
            String naxtLine = scanner.nextLine();
            if(index ==1) {
                a = Integer.valueOf(naxtLine);
            }else if(index ==2){
                b = Integer.valueOf(naxtLine);
            }
            index ++;
            if(index == 3){
                break;
            }
        }
        c=a+b;
        System.out.println("a+b的值为:"+c);
    }
    public static void test5(){
        int a,b,c;
        a = 0;
        b = 0;
        System.out.println("test5请输入a和b的值:");
        Scanner scanner = new Scanner(System.in);
        int index = 1;
        while (true){
            String naxtLine = scanner.nextLine();
            if(index ==1) {
                a = Integer.valueOf(naxtLine);
            }else if(index ==2){
                b = Integer.valueOf(naxtLine);
            }
            index ++;
            if(index == 3){
                break;
            }
        }
        c=a+b;
        //相对于test4把值的输出封装到了弹出框中,使得输出变得更加灵活
        JOptionPane.showMessageDialog(new JLabel(),c,"a+b的值为:",2);
    }
    public static void test6(){
        int a,b,c,d;
        a = 0;
        b = 0;
        System.out.println("test6请输入a和b的值:");
        Scanner scanner = new Scanner(System.in);
        int index = 1;
        while (true){
            String naxtLine = scanner.nextLine();
            if(index ==1) {
                a = Integer.valueOf(naxtLine);
            }else if(index ==2){
                b = Integer.valueOf(naxtLine);
            }
            index ++;
            if(index == 3){
                break;
            }
        }
        //这个d的值为数据库中取出的结果如何?
        d = 222;
        c=a+b+d;
        JOptionPane.showMessageDialog(new JLabel(),c,"a+b+d的值为:",2);
    }
    public static void test7(){
        int a,b,c,d,e;
        a = 0;
        b = 0;
        System.out.println("test7请输入a和b的值:");
        Scanner scanner = new Scanner(System.in);
        int index = 1;
        while (true){
            String naxtLine = scanner.nextLine();
            if(index ==1) {
                a = Integer.valueOf(naxtLine);
            }else if(index ==2){
                b = Integer.valueOf(naxtLine);
            }
            index ++;
            if(index == 3){
                break;
            }
        }
        //这个d的值为数据库中取出的结果如何?
        d = 222;
        //这个e为从配置文件中获取的结果如何?
        e = 555;
        c=a+b+d-e;
        JOptionPane.showMessageDialog(new JLabel(),c,"a+b+d-e的值为:",2);
    }
}


四、学习总结


1.对于面向对象特性的理解从原子的角度去剖析从而发现它举足轻重的意义

2.N+1过程的理解:改变事物中某一个原子粒度的量来对比其变化


五、升华


多维度、场景化的来学习和理解,静静品味人类时间长河中智慧的产物


参考资料:大话设计模式、java软件设计基础、架构整洁之道、c#程序设计

相关文章
|
2月前
|
JavaScript API 开发者
DeepSeek Harness 刚发布,先让它做了个网页
DeepSeek Harness(DSH)是DeepSeek开源的Agent执行框架,践行“Model + Harness = Agent”理念。v0.1开发者预览版发布次日即实测成功:一行命令`npx @deepseek-ai/dsh web`启动,自动完成搜索、规划、写HTML、本地验证全流程,支持插件扩展与完整执行轨迹追踪。(239字)
886 1
DeepSeek Harness 刚发布,先让它做了个网页
|
4月前
|
机器学习/深度学习 自然语言处理 运维
从零搞懂大模型:定义、起源、计量单位与完整分类|入门必看干货
本文用通俗语言系统梳理大模型核心知识:明确定义(参数≥10亿)、爆发根源(数据+算力+Transformer三要素)、三大计量单位(B/Token/FLOPS)、分类体系(模态/功能)及开源vs闭源逻辑,助新手建立扎实认知基础,为后续微调、RAG、智能体开发铺路。(239字)
1189 2
|
6月前
|
编解码 自然语言处理 文字识别
LLaDA2.0-Uni 开源: 打破 AR 桎梏,dLLM定义原生多模态统一新范式
LLaDA2.0-Uni是全球首个开源的多模态MoE离散扩散大模型(dLLM),以16B参数统一实现图像理解、生成与编辑。突破性采用全离散扩散建模,摆脱自回归依赖,支持并行解码与任意分辨率;语义视觉Token+定制Diffusion Decoder,8步即出高质量图。已在21项基准登顶,全面开源。
850 1
LLaDA2.0-Uni 开源: 打破 AR 桎梏,dLLM定义原生多模态统一新范式
|
4月前
|
人工智能 安全 Serverless
云计算发展趋势全景解读:2026年技术决策者需要关注什么?
云计算正在从"基础设施搬迁"转向"智能化运行时"。AI原生架构、边缘混合部署、FinOps精细化治理、数据主权合规和零信任安全是当前五条主线,技术决策者需要从业务场景出发,重新审视云架构的选型逻辑。
|
6月前
|
人工智能 小程序 语音技术
如何制作虚拟实时数字人系统
一句话速览:从需求定义到上线部署,标准化流程兼顾专业精度与落地效率,30 分钟可完成低成本快速生成。
|
8月前
|
存储 弹性计算 Linux
2026年阿里云服务器购买攻略:三种核心购买方式对比与实操指南
阿里云服务器提供快速购买、自定义购买和活动购买三种方式,适合不同场景需求。选购前需综合考量业务场景、成本策略、地域选择及安全合规。快速购买适用于基础配置速购,提供基础、标准、专业、增强四类套餐,匹配个人开发、企业官网、电商平台等场景,并需注意镜像选择(如Alibaba Cloud Linux性能优化)、带宽计费模式(固定带宽、按量计费、共享带宽包)及完整购买流程。
|
9月前
|
人工智能 小程序 前端开发
1月15日|「Qoder Together 武汉站」圆满落幕
2026年1月15日,「Qoder Together 武汉站」在武汉锦江国际大酒店圆满落幕。活动汇聚开发者、产品经理与技术爱好者,聚焦智能编程趋势,通过主题演讲与实战分享,展现Qoder在Agentic Coding领域的创新实践。从零代码开发“养猫管家”小程序,到AI原型快速落地,现场生动诠释了人工智能如何重塑软件开发模式,降低技术门槛,激发全民创造力。嘉宾深度解读与沉浸式演示引发强烈共鸣,点燃人机协同的未来想象。
395 2
|
人工智能 搜索推荐 API
AI赋能大学计划·大模型技术与应用实战学生训练营——华东师范大学站圆满结营
4月24日,由中国软件行业校园招聘与实习公共服务平台携手阿里魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行大模型应用实战学生训练营——华东师范大学站圆满结营。
763 2
|
API 开发工具 计算机视觉
YOLO11 语句整理
本内容介绍基于YOLOv11模型的开发流程,涵盖模型下载、安装依赖库、训练与推理、模型转换为OpenVINO格式及部署。通过Ultralytics工具包实现模型加载、训练和预测,并使用OpenVINO优化推理性能。此外,提供数据集划分方法,按指定比例生成训练集、验证集和测试集,确保数据准备规范化,提升模型训练效果与实用性。
|
并行计算 计算机视觉 C++
部署实战 | 手把手教你在Windows下用TensorRT部署YOLOv8(一)
部署实战 | 手把手教你在Windows下用TensorRT部署YOLOv8(一)
2422 0

热门文章

最新文章