V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ppppppp123
V2EX  ›  程序员

如何向高中生介绍 Java 中的类,对象,接口等概念?

  •  
  •   ppppppp123 · 2023-02-14 22:26:10 +08:00 · 3091 次点击
    这是一个创建于 408 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先歪个楼,祝大家节日快乐~

    高三表弟对程序很感兴趣,如何用简单好懂的方式让他们领悟 Java 中的这些词汇的设计用意?
    第 1 条附言  ·  2023-02-16 09:06:49 +08:00
    忘了贴 background:他不参加国内高考,直接参加美国大学的入学前考试。
    47 条回复    2023-02-16 11:21:29 +08:00
    jooks
        1
    jooks  
       2023-02-14 22:37:20 +08:00
    尚硅谷
    netabare
        2
    netabare  
       2023-02-14 22:41:09 +08:00 via Android
    一个具体的物体,一个可以划入若干个物体的分类,还有能够表达「某些分类的共性」的抽象概念,应该能找到一些比较好的例子去讲解。
    GeruzoniAnsasu
        3
    GeruzoniAnsasu  
       2023-02-14 22:42:02 +08:00
    GUI 编程。

    对话框类 => 对话框的具体设计
    对话框对象 => 几个一模一样但不同的对话框
    接口 => 对话框模板

    我当初一夜之间领悟 OO 这些概念全靠的是 MFC
    duke807
        4
    duke807  
       2023-02-14 22:53:43 +08:00 via Android
    你应该教 python 、js ,而非 java
    Leviathann
        5
    Leviathann  
       2023-02-14 22:58:53 +08:00
    interface 这个概念,很多人理解都有偏差,理解不到为什么 ui ,user interface 和程序里的 interface 用同一个词
    实际上他们本就是同一个东西
    cmdOptionKana
        6
    cmdOptionKana  
       2023-02-14 23:00:12 +08:00
    先让他在不理解设计用意的状态下写一些程序,写着写着,他自己就悟了。

    反之,如果实践太少,靠理论灌输是很难吸收的。
    Leviathann
        7
    Leviathann  
       2023-02-14 23:01:18 +08:00
    另外可能对没有程序经验的,直接从贴近数学的基础函数式编程讲起可能更容易理解
    而且我记得当初上高中的时候数学是有讲算法的,不是具体的某个算法,而是算法这个概念本事
    qsmd42
        8
    qsmd42  
       2023-02-14 23:14:59 +08:00
    高三学生跟大一学生在学 OOP 方面能有什么区别...
    你当初怎么学的 就怎么教给他呗
    Chieh
        9
    Chieh  
       2023-02-14 23:40:21 +08:00
    harvard cs50
    1145148964
        10
    1145148964  
       2023-02-14 23:45:45 +08:00 via Android   ❤️ 4
    高三这个时候你教他,你这责任有点牛逼
    windyskr
        11
    windyskr  
       2023-02-14 23:50:35 +08:00
    现在距离 2023 年高考还有 112 天 9 小时
    majula
        12
    majula  
       2023-02-15 00:03:26 +08:00
    不建议上来就讲 Java 这种丑陋的工业语言,更进一步说,不建议上来就讲任何编程语言

    先从理论开始,找几本 PLT 的书给他看

    如果他不止对“程序”感兴趣,还对计算机的工作原理感兴趣,以后有可能想以职业为目标发展的话,那就直接让他看名校的 CS 公开课吧
    echoless
        13
    echoless  
       2023-02-15 00:10:48 +08:00 via Android
    狗汪汪 猫喵喵 鸭子嘎嘎嘎 都是动物叫 幼儿园都懂

    叫起来像鸭子就是鸭子 哈哈
    lingly02
        14
    lingly02  
       2023-02-15 00:27:42 +08:00 via iPhone
    我觉的兴趣是最好的老师。楼主可以从他最感兴趣的方面入手。比如让他列出心目中定义一个女朋友的属性和基本行为,比如身高体重之类的,教给他类的概念。再让他列出不同类型女朋友的特定行为,比如打扫,花钱等等。教给他接口和子类的概念。再将他现实中的女朋友实例化,告诉他什么是对象。以此类推,还可以教他组合,聚合,多态之类的
    yaoyao1128
        15
    yaoyao1128  
       2023-02-15 02:45:51 +08:00 via iPhone
    emm 如果可以的话,用 cpp 解释带入到 java 感觉比直接用 java 理解简单
    ns09005264
        16
    ns09005264  
       2023-02-15 04:03:05 +08:00
    以前学的时候,老师是从万物皆对象引入的。。
    另外建议换个别的语言来学,比如 golang ,javascript 这些比较简单的,学的快,写点小工具也轻松,有成就感。
    Pichai
        17
    Pichai  
       2023-02-15 06:06:56 +08:00 via iPhone
    高三还是抓紧时间搞个好本科
    Chad0000
        18
    Chad0000  
       2023-02-15 06:36:02 +08:00
    @cmdOptionKana #6
    赞同,大概 20 年前,我高中时花了一个月泡在学校的电子阅览室(因为不要钱),拿着一本 Frontpage 2000 反复阅读并练习,全文翻了好几遍,学会了如何制作网页,同时也悟出了网站是什么。
    leegradyllljjjj
        19
    leegradyllljjjj  
       2023-02-15 08:39:33 +08:00 via Android   ❤️ 8
    这些程序员看来真把编程当圣经了
    shakoon
        20
    shakoon  
       2023-02-15 08:44:45 +08:00
    相比之下,不如给他介绍个对象?[doge]
    fiypig
        21
    fiypig  
       2023-02-15 08:45:19 +08:00
    讲通俗比喻更容易理解
    ALLROBOT
        22
    ALLROBOT  
       2023-02-15 08:45:49 +08:00
    如果是入门,建议用易语言,看中文代码至少能建立一个概念,然后再玩 python ,后面就随意了

    毕竟日常生活用得上就几门语言 python ,js 之类。。。其它语言使用的机会不多
    Lefi
        23
    Lefi  
       2023-02-15 08:58:30 +08:00
    高三不是应该迎战高考么,怎么还有时间写程序...
    darkengine
        24
    darkengine  
       2023-02-15 09:01:07 +08:00
    我懂了,你的用意是劝退对不对
    onice
        25
    onice  
       2023-02-15 09:03:45 +08:00
    可以举现实生活中的例子,让他体会面向对象的思想。比如告诉他,在 Java 中,一切都是对象。任何东西都可以抽象成类,一个东西有他的特性和行为,在 Java 中,用成员属性和方法来表示。比如要表示一台主机,思考一下,这台主机的特性是不是有:品牌,CPU 型号,内存大小,显卡型号,主板型号,硬盘容量等特性。这种特性在 Java 中用成员属性来表示。但是这台主机也有行为,是不是可以开机和关机,光驱可以弹出和关闭,类似于这种带有动作之类的行为,Java 中用方法来表示。。然后写一段 demo 给他看看。。。类似这样子吧,没编程经验,不了解面向过程的思想,完全领悟 OOP 可能还不行,可能很难理解为什么 OOP 要这么设计。但是可以让他体验一下什么是 OOP 。
    nothingistrue
        26
    nothingistrue  
       2023-02-15 09:22:12 +08:00
    编程的基础,是数学(算法)、语言(语法)、逻辑学、哲学( OOP 、设计模式等等)。这些东西,有些都参加工作的老手都不懂——正好这两天有几个怼 OO 的,就更别说还在准备八股文式中高考的初高中生了。省省别介绍了,真有不准备考试的闲工夫,教他打游戏谈恋爱都比这强。
    nu11ptr
        27
    nu11ptr  
       2023-02-15 09:31:19 +08:00
    转盘扫把拖拉机.jpg
    wangerka
        28
    wangerka  
       2023-02-15 09:34:08 +08:00
    建议和[我从来没见过比面向对象更糟糕的编程范式和语言]( https://www.v2ex.com/t/915980)battle 一下
    llsquaer
        29
    llsquaer  
       2023-02-15 09:35:54 +08:00
    用的 python 我的领悟是

    函数多了就把相似功能的封装到一个类里面,去执行相关的功能.. 就像家里东西多了,总的要分类分区域存放方便使用.
    DefoliationM
        30
    DefoliationM  
       2023-02-15 09:36:22 +08:00 via Android
    直接讲面向对象,不要讲 Java ,感觉还是比较好理解的。
    debuggerx
        31
    debuggerx  
       2023-02-15 09:40:01 +08:00
    自学的 java ,至今觉得 java 基础这块讲的最好的还是 mars 老师这套:
    https://www.bilibili.com/video/BV15W411C7z6?p=12
    Hurriance
        32
    Hurriance  
       2023-02-15 10:51:45 +08:00 via iPhone
    蛋糕模具,一个个蛋糕
    NoKey
        33
    NoKey  
       2023-02-15 10:53:35 +08:00
    高三毕业再说~
    AlexHsu
        34
    AlexHsu  
       2023-02-15 11:15:43 +08:00
    为啥不从面向过程开始讲呢 c 和 python 甚至是 go 都比 java 适合当第一门语言啊
    simplereasy
        35
    simplereasy  
       2023-02-15 11:18:04 +08:00
    head first java 讲的很好的入门书籍
    lclei
        36
    lclei  
       2023-02-15 11:20:06 +08:00 via iPhone
    @lingly02 你是懂女朋友的
    Ericcccccccc
        37
    Ericcccccccc  
       2023-02-15 11:33:56 +08:00
    高中生多学英语. 努力考更好的学校.
    liuidetmks
        38
    liuidetmks  
       2023-02-15 11:36:27 +08:00
    高中生不是应该学好,上好学校吗。代码,设计模式玩的飞起没啥用。
    aulayli
        39
    aulayli  
       2023-02-15 11:52:01 +08:00 via Android
    先学会 java 基础吧,直接看廖雪峰的教程就行了。
    brucebie
        40
    brucebie  
       2023-02-15 11:54:02 +08:00
    还是先学 C 语言比较好,后面再学 C++,再后面学其它语言就容易了
    simonlu9
        41
    simonlu9  
       2023-02-15 12:09:34 +08:00
    接口是功能,类的一个抽象的东西,对象是个具体的东西,比如手机吧,是一个类,你可以给它加上充电功能,充电功能是个标准的东西,规范了 typec 接口,然后厂商按照这个设计图来生产一个带充电的手机出来就可以了,后续在加功能,比如拍照,nfc ,蓝牙,都是一样,通过不同接口协议实现
    saberlove
        42
    saberlove  
       2023-02-15 16:35:04 +08:00
    对于高中生来说,介绍 Java 中的类、对象、接口等概念需要用简单易懂的语言和具体例子来解释。以下是一个可能的介绍方式:

    类( Class ):在 Java 中,类是一种数据类型,它定义了一组属性和方法,可以被用来创建对象。例如,我们可以定义一个名为“Person”的类来表示一个人,这个类包含了一些属性(例如姓名、年龄、性别等)和方法(例如说话、跑步等)。

    对象( Object ):对象是类的一个实例。当我们创建一个类的对象时,我们实际上是在创建该类的一个实例。例如,我们可以使用“Person”类来创建一个名为“tom”的对象,该对象包含了一个人的所有属性和方法。

    接口( Interface ):接口是一种抽象类型,它定义了一组方法,但不提供方法的实现。其他类可以实现这个接口,并提供这些方法的实现。例如,我们可以定义一个名为“Playable”的接口来表示可播放的对象,该接口包含了一个名为“play”的方法。然后我们可以让“CDPlayer”类实现“Playable”接口,提供“play”方法的具体实现。

    通过这些简单的解释和例子,高中生可以初步了解类、对象、接口等概念。当他们深入学习 Java 编程时,他们将更详细地了解这些概念的含义和用法。
    arkerdota
        43
    arkerdota  
       2023-02-15 19:43:59 +08:00
    类 对象 就是为了精简代码量用的,你可以以设计一个具体的系统为例,比如一个超市的管理系统,一个一个的加入,其实比较建议看大话设计模式
    cnbatch
        44
    cnbatch  
       2023-02-16 01:56:37 +08:00
    高三?最好高考完了再说,反正也不差这几个月的时间
    buffzty
        45
    buffzty  
       2023-02-16 10:52:53 +08:00
    如果我是老师 我不会直接教类. 我先教他定义一个函数,再使用这个函数,然后再定义三四个函数. 这时候引申一下 如果定义了几百个函数 就得归类,此时教他类. 如果只是教他用 他很难懂 他也不知道为什么要用类
    huyangq
        46
    huyangq  
       2023-02-16 11:14:34 +08:00
    建议从数学入手,程序就是状态机,就是根据算法产生的一条条指令,也就是从面向过程出发。
    然后当软件规模上去之后,面向对象的思想就自然而然就出来了。
    面向对象是一个方法论,是一种好的思维方式,跟语言本身是无关的,linux 源码处处是面向对象,但用的是 C 。
    有了这些思想,自然而然就会有一些专有名词,然后用人话解释那些所谓的名词。
    If you can’t explain it simply, you don’t understand it well enough.
    huyangq
        47
    huyangq  
       2023-02-16 11:21:29 +08:00
    真要挑一个语言,还得是 C/C++,C 的语法很简单,慢慢地 C++为了面向对象写起来方便,就设计了很多东西,那些设计地目的是什么?怎么说呢?这个还得是一个慢慢学,慢慢悟地过程,一下就懂的那是天才。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2780 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 673ms · UTC 12:31 · PVG 20:31 · LAX 05:31 · JFK 08:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.