【学习目标】:
【学习目标】:
=>①使用类图描述设计
=>②掌握面向对象设计的基本步骤
=>③掌握类和对象的概念
=>④掌握构造方法及其重载
=>⑤掌握封装的概念及其使用
1.1 用面向对象开发系统
1.1.1 为什么使用面向对象?
现实世界是面向对象的,面向对象就是采用“现实模拟”的方法设计和开发程序。
面向对象技术利用“面向对象的思想”去描述“面向对象的世界”,实现了虚拟世界和现实世界的一致性,符合人们的思维方式。
同时代码重用性高、可靠性高等优点,大大提高了软件的开发效率。
问题:面向过程和面向对象的区别?
答:面向过程的核心是函数,以功能为中心,实现了函数级别的代码重用。面向对象的核心是封装了属性和方法(行为)的类,以数据为中心,实现了类级别的代码重用。面向对象因为采用了类,所以具有继承和多肽特性,可以进一步重用代码和简化编程。而面向过程中没有继承和多肽特性。
1.1.2 使用面向对象进行程序设计
面向对象设计的过程就是抽象的过程,分以下三步:
第一步:发现类
第二步:发现类的属性
第三步:发现类的方法
抽象时遵循的原则如下:
◆ 属性和方法的设置是为了解决业务问题。
? 关注主要属性和方法。
? 如没有必要,勿增加额外的类、属性与方法。
类图是面向对象设计的“图纸”,使用“图纸”进行设计,方便了沟通和修改。将设计的结果通过类图来表示。
1.2 创建类和对象
1.2.1 类和对象的创建
类的基本结构:类主要由属性和行为组成,属性和行为又称为类的成员变量(或者成员属性)和成员方法,统称为类的成员。
(除此之外,类的成员还包括构造方法和代码块等)。
Java中创建对象,调用属性及方法
? 通过构造方法/函数来创建对象,如:“”Penguin p=new Penguin();。
? 通过对象名.属性名的方式调用属性,如:"p.name="qq";"。
? 通过对象名.方法名的方式调用方法,如:"p.print();"。
类和对象是面向对象的两个核心概念。类是对某一类事物的描述,是抽象的、概念上的定义。对象是实际存在的、具体的事物个体。我们可以由一个类创建多个对象。例如:建筑物图样和建筑物实物的关系。
常量
常量用来储存不变的数据,常量在程序运行过程中不会发生变化,只能被引用,不能被重新赋值,也就是只能在定义时修改其值。Java中常量使用final关键字修饰,并且常量名通常为大写。
final关键字除了可以用来修饰属性外,还可以修饰方法和类。
规范
类名、属性名、方法名及其常量名的命名规范如下:
? 类名由一个或几个单词组成,每个单词的第一个字母大写,如Dog、StringBuffer。
? 属性名和方法名由一个或几个单词组成,第一个单词首字母小写,其他单词首字母大写,如:health、stuName、println()、getMessage()。
? 常量名由一个或几个单词组成,所有字母大写,如:PI、SEX_MALE。
1.2.2 构造方法及其重载
构造方法
在Java中,可以通过无参或者带参数的构造方法完成赋值(创建对象的同时赋值)的初始化工作。
假如含有一个Dog类,该类中含有一个无参构造方法public Dog() { //方法体 },当创建Dog类对象时Dog dog =new Dog();,就会执行构造方法 Dog() 方法中的代码。构造方法是一个特殊的方法,当类中没有构造方法 Dog() 方法时,系统默认提供一个空的无参 Dog() 方法。
构造方法的名称和类名相同,没有返回值类型。构造方法的主要作用就是在创建对象时执行一些初始化操作,如给成员属性赋初值。
重载
同一个类中包含了两个或两个以上的方法,方法名相同,参数列表不同(参数个数/参数数据类型不同),这称为构造方法的重载。
成员方法和构造方法都可以进行重载。重载的例子:System.out.println(45);System.out.println(“狗狗在玩耍!”);
可以通过构造方法的重载来实现多种初始化行为,在创建对象时可以根据需要选择合适的构造方法。
在没有给类提供任何构造方法时,系统会默认提供一个无参的构造方法。一旦提供了自定义构造方法,系统将不再提供这个默认构造方法。如果要使用它,则程序员必须手动添加。
方法重载的判断依据:
◆ 必须在同一个类里
◆ 方法名相同
◆ 参数列表(方法参数的个数或数据类型)不同
◆ 与方法返回值和方法修饰符没有任何关系
? 在使用this调用自身的其他构造方法时,只能作为第一条语句。
销毁对象
对象的销毁不需要程序员来做,而是通过java虚拟机的垃圾回收器在后台自动实现。
1.2.3 static 修饰符
static 可以用来修饰属性、方法和代码块。static 修饰的变量属于这个类所有,即由这个类创建的所有对象共用同一个static 变量。通常把static修饰的属性和方法称为类属性(类变量)和类方法。不使用 static 修饰的属性和方法属于单个对象,通常称为实例属性(实例变量)和实例方法。例如:main方法:public static void main(String[] args) { } 。
static用法和使用static修饰属性和代码块时,如何分配内存空间结论:
? 在加载类的过程中,完成静态变量的内存分配,再执行静态块,两者是在创建对象之前执行的。
? 类属性和类方法可以通过类名和对象名访问,实例属性和实例方法只能通过对象名访问。
? 类方法只能访问类属性和其他类方法。
注意:静态方法中不能使用this和super关键字。
在使用常量时为了方便调用,可以使用static来修饰,并且建议采用此种方式。例如:static final String SEX_MALE ="Q仔";在使用时可以直接通过类名.SEX_MALE方式使用。这时称这个常量为静态常量。
1.3 使用封装优化系统中的类
封装是面向对象的三大特性之一,就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而通过该类提供的方法来实现对隐藏信息的操作和访问。
封装的具体步骤:修改属性的可见性来限制对属性的访问;为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的存取;在赋值方法中,加入对属性的存取控制语句。
封装的好处:隐藏类的实现细节;让使用者只能通过程序规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作。
原文地址:https://www.cnblogs.com/wxdestiny/p/8622855.html