通过宠物商店理解java面向对象
通过宠物商店理解java面向对象
前言:本篇博客,适合刚刚学完java
基础语法的但是,对于面向对象,理解不够深刻的读者,本文通过经典的宠物商店,来让读者深刻的理解,面向对象,IS-A
,HAS-A
法则。本文不仅仅是简单的用java来模拟一个宠物商店,而是通过分析宠物商店的业务,来让大家理解,最简单的业务逻辑,即商店
,商品
,用户
,这三者的逻辑,这个代码同样可以适用于,图书管理系统
,书店管理系统
,宿舍管理系统
等等的入门理解。
好了本文开始了。首先我们先把题目给出来。
首先是分析,宠物店,动物,小猫小狗,客户
之间的关系,其中最为明显的就是,小猫小狗与动物之间的关系,很显然小猫小狗继承动物的属性,他们之间属于IS-A
,什么是IS-A
法则,就是这种继承关系
,所以,我们可以构建Animal类,思考所有动物的公共属性,比如我这里写的这个Animal
类中的姓名
,价格
,性别
,颜
,年龄
这些成员,因为是举例子,所以很多地方并不会写的很全,然后再分析行为,我这里设计的他们的共有行为便是,Shout()
,大叫
属性。
当Animal
这个基类成功之后,那么后续就是,设计猫类,狗类了,对于这两个类的话,为了方便理解,我们设置他们的新的成员是,对于猫来说为CatPara
,对于狗来说的话是DogPara
,然后他们会重写父类的Shout()
方法,这里就体现了面向对象里面的多态
,具体代码如下。
代码如下:
代码语言:javascript代码运行次数:0运行复制/*
* 讲解面向对象的三个基本特性
* IS-A法则
* HAS-A法则
* */
// 动物类
class Animal{
private String name; // 姓名
private Double price; // 价格
private Boolean ; // 性别
private String color; // 颜
private Integer age; // 年龄
public Animal() {
}
public void Shout(){ // 大叫
println("大声的叫");
}
public String getame() {
return name;
}
public void setame(String name) {
= name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Boolean getSex() {
return ;
}
public void setSex(Boolean ) {
this. = ;
}
public String getColor() {
return color;
}
public void setColor(String color) {
= color;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() { // 重写toString()方法 方便遍历类
return "Animal{" +
"name='" + name + '\'' +
", price=" + price +
", =" + +
", color='" + color + '\'' +
", age=" + age +
'}';
}
}
// 狗类
class Dog extends Animal{ // Dog is a animal // 继承父类属性 这里体现了继承
private Integer DogPara; // 狗参数
public Integer getDogPara() {
return DogPara;
}
public void setDogPara(Integer dogPara) {
DogPara = dogPara;
}
public void WagTail(){ // 对于小狗添加了一个新的摇尾巴的方法
println("摇尾巴");
}
public Dog() {
}
@Override
public void Shout(){ // 重写父类的方法 这里体现了多态
println("汪汪汪");
}
@Override
public String toString() {
return "Dog{" +
"DogPara=" + DogPara + " " + () +
'}';
}
}
// 猫类
class Cat extends Animal{
private Integer CatPara; // 猫参数
public Integer getCatPara() {
return CatPara;
}
public void setCatPara(Integer catPara) {
CatPara = catPara;
}
public void LickHair(){ // 对于小猫 添加一个毛的方法
println("毛");
}
public Cat() {
}
@Override
public void Shout(){ // 重写父类属性
println("喵喵喵");
}
@Override
public String toString() { // 重写toString()方法 方便遍历类
return "Cat{" + // super()调用父类的toString()方法 可以简写很多。
"CatPara=" + CatPara + " " + () +
'}';
}
}
对于宠物店类
,和宠物
的关系,这里属于的是HAS-A
法则,HAS-A
法则什么意思了,比如,汽车
与轮胎
之间的关系,轮胎
属于汽车
,在这个例题中的情况就是,宠物
属于宠物店
,这就是HAS-A
法则。
/*
* Has-A法则
*
* */
// 宠物店类
class PetShop{
// 这里体现了HAS-A法则 宠物店包含小猫,小狗这些宠物
private ArrayList<Dog> dogs; // 宠物店的小狗的集合
private ArrayList<Cat> cats; // 宠物店中小猫的集合
public PetShop() { // 构造方法中加上代码 随机的生成初始数据
Random random = new Random();
dogs = new ArrayList<>();
cats = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Dog dog = new Dog();
Cat cat = new Cat();
dog.setame("dog" + i);
cat.setame("cat" + i);
dog.setPrice(() * 400 + 100); // [0,1) * 400 = [0, 400) + 100 = [100, 500)
cat.setPrice(() * 400 + 100); // [0,1) * 400 = [0, 400) + 100 = [100, 500)
dog.setSex(());
cat.setSex(());
dog.setDogPara((1000));
cat.setCatPara((1000));
dog.setColor((1000) + ":" + (1000) + ":" + (1000));
cat.setColor((1000) + ":" + (1000) + ":" + (1000));
dog.setAge((10));
cat.setAge((10));
dogs.add(dog);
cats.add(cat);
}
}
public void Traversal(){ // 遍历现有数据
for (int i = 0; i < dogs.size(); i++) {
println(dogs.get(i));
}
println("----------------------------------");
Iterator<Cat> iterator2 = cats.iterator();
while(iterator2.hat())
{
println(());
}
}
public int getumDog(){
return dogs.size();
}
public int getumCat(){
return cats.size();
}
public ArrayList<Dog> getDogs() {
return dogs;
}
public void setDogs(ArrayList<Dog> dogs) {
this.dogs = dogs;
}
public ArrayList<Cat> getCats() {
return cats;
}
public void setCats(ArrayList<Cat> cats) {
= cats;
}
}
这时候我们就需要分析最后一种关系,客户
与宠物店
之间的关系,它们之间的关系,是两个单独的个体,至于怎么联合起来,通过客户类中的Buy(PetShop petShop)
行为就可以理解了。
class Custom{
private Boolean ;
private Integer age;
private String name;
private ArrayList<Dog> dogs;
private ArrayList<Cat> cats;
public Custom() {
}
public Custom(String name) {
= name;
}
public boolean Buy(PetShop petShop){ // 这是客户在宠物店中购买商品的情况
// 因为这是一个讲解面向对象的,所以这里作者就先不补全了,示意即可
Scanner in = new Scanner(System.in);
println("Y/"); // 小狗就是Y 小猫就是
String flag = ().toLowerCase();
if (("y")){
}
else {
}
return false;
}
public Boolean getSex() {
return ;
}
public void setSex(Boolean ) {
this. = ;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public ArrayList<Dog> getDogs() {
return dogs;
}
public void setDogs(ArrayList<Dog> dogs) {
this.dogs = dogs;
}
public ArrayList<Cat> getCats() {
return cats;
}
public void setCats(ArrayList<Cat> cats) {
= cats;
}
}
通过该文章的这个例题的简介,基本上就讲解完了,面向对象的基础和IS-A,HAS-A法则。
代码语言:javascript代码运行次数:0运行复制import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;
/*
* 讲解面向对象的三个基本特性
* IS-A法则
* HAS-A法则
* */
class Animal{
private String name; // 姓名
private Double price; // 价格
private Boolean ; // 性别
private String color; // 颜
private Integer age; // 年龄
public Animal() {
}
public void Shout(){ // 大叫
println("大声的叫");
}
public String getame() {
return name;
}
public void setame(String name) {
= name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Boolean getSex() {
return ;
}
public void setSex(Boolean ) {
this. = ;
}
public String getColor() {
return color;
}
public void setColor(String color) {
= color;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
", price=" + price +
", =" + +
", color='" + color + '\'' +
", age=" + age +
'}';
}
}
class Dog extends Animal{ // Dog is a animal
private Integer DogPara;
public Integer getDogPara() {
return DogPara;
}
public void setDogPara(Integer dogPara) {
DogPara = dogPara;
}
public void WagTail(){
println("摇尾巴");
}
public Dog() {
}
@Override
public void Shout(){
println("汪汪汪");
}
@Override
public String toString() {
return "Dog{" +
"DogPara=" + DogPara + " " + () +
'}';
}
}
class Cat extends Animal{
private Integer CatPara;
public Integer getCatPara() {
return CatPara;
}
public void setCatPara(Integer catPara) {
CatPara = catPara;
}
public void LickHair(){
println("毛");
}
public Cat() {
}
@Override
public void Shout(){
println("喵喵喵");
}
@Override
public String toString() {
return "Cat{" +
"CatPara=" + CatPara + " " + () +
'}';
}
}
/*
* Has-A法则
*
* */
class PetShop{
private ArrayList<Dog> dogs;
private ArrayList<Cat> cats;
public PetShop() {
Random random = new Random();
dogs = new ArrayList<>();
cats = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Dog dog = new Dog();
Cat cat = new Cat();
dog.setame("dog" + i);
cat.setame("cat" + i);
dog.setPrice(() * 400 + 100); // [0,1) * 400 = [0, 400) + 100 = [100, 500)
cat.setPrice(() * 400 + 100); // [0,1) * 400 = [0, 400) + 100 = [100, 500)
dog.setSex(());
cat.setSex(());
dog.setDogPara((1000));
cat.setCatPara((1000));
dog.setColor((1000) + ":" + (1000) + ":" + (1000));
cat.setColor((1000) + ":" + (1000) + ":" + (1000));
dog.setAge((10));
cat.setAge((10));
dogs.add(dog);
cats.add(cat);
}
}
public void Traversal(){
for (int i = 0; i < dogs.size(); i++) {
println(dogs.get(i));
}
println("----------------------------------");
Iterator<Cat> iterator2 = cats.iterator();
while(iterator2.hat())
{
println(());
}
}
public int getumDog(){
return dogs.size();
}
public int getumCat(){
return cats.size();
}
public ArrayList<Dog> getDogs() {
return dogs;
}
public void setDogs(ArrayList<Dog> dogs) {
this.dogs = dogs;
}
public ArrayList<Cat> getCats() {
return cats;
}
public void setCats(ArrayList<Cat> cats) {
= cats;
}
}
class Custom{
private Boolean ;
private Integer age;
private String name;
private ArrayList<Dog> dogs;
private ArrayList<Cat> cats;
public Custom() {
}
public Custom(String name) {
= name;
}
public boolean Buy(PetShop petShop){
Scanner in = new Scanner(System.in);
println("Y/"); // 小狗就是Y 小猫就是
String flag = ().toLowerCase();
if (("y")){
}
else {
}
return false;
}
public Boolean getSex() {
return ;
}
public void setSex(Boolean ) {
this. = ;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public ArrayList<Dog> getDogs() {
return dogs;
}
public void setDogs(ArrayList<Dog> dogs) {
this.dogs = dogs;
}
public ArrayList<Cat> getCats() {
return cats;
}
public void setCats(ArrayList<Cat> cats) {
= cats;
}
}
public class Main {
public static void main(String[] args) {
PetShop petShop = new PetShop(); // 创建一个宠物店
// petShop.Traversal();
Custom custom = new Custom("LiHua");
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:202-09-14,如有侵权请联系 cloudcommunity@tencent 删除javapublicreturnvoid继承 #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 15 条评论) |
本站网友 召开 | 14分钟前 发表 |
适合刚刚学完java基础语法的但是 | |
本站网友 标签打印机品牌 | 22分钟前 发表 |
price=" + price + " | |
本站网友 uyaaa | 1分钟前 发表 |
因为是举例子 | |
本站网友 se222 | 15分钟前 发表 |
书店管理系统 | |
本站网友 打屁屁的视频大全 | 6分钟前 发表 |
价格 | |
本站网友 壹号肉铺 | 3分钟前 发表 |
理解不够深刻的读者 | |
本站网友 郧西县中 | 5分钟前 发表 |
代码语言:javascript代码运行次数:0运行复制import java.util.ArrayList; import java.util.Iterator; import java.util.Random; import java.util.Scanner; /* * 讲解面向对象的三个基本特性 * IS-A法则 * HAS-A法则 * */ class Animal{ private String name; // 姓名 private Double price; // 价格 private Boolean ; // 性别 private String color; // 颜 private Integer age; // 年龄 public Animal() { } public void Shout(){ // 大叫 println("大声的叫"); } public String getame() { return name; } public void setame(String name) { = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } public Boolean getSex() { return ; } public void setSex(Boolean ) { this. = ; } public String getColor() { return color; } public void setColor(String color) { = color; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Animal{" + "name='" + name + '\'' + " | |
本站网友 装修材料价格 | 11分钟前 发表 |
IS-A | |
本站网友 谷歌新漏洞 | 15分钟前 发表 |
颜 | |
本站网友 华为技术支持 | 1秒前 发表 |
age=" + age + '}'; } } class Dog extends Animal{ // Dog is a animal private Integer DogPara; public Integer getDogPara() { return DogPara; } public void setDogPara(Integer dogPara) { DogPara = dogPara; } public void WagTail(){ println("摇尾巴"); } public Dog() { } @Override public void Shout(){ println("汪汪汪"); } @Override public String toString() { return "Dog{" + "DogPara=" + DogPara + " " + () + '}'; } } class Cat extends Animal{ private Integer CatPara; public Integer getCatPara() { return CatPara; } public void setCatPara(Integer catPara) { CatPara = catPara; } public void LickHair(){ println("毛"); } public Cat() { } @Override public void Shout(){ println("喵喵喵"); } @Override public String toString() { return "Cat{" + "CatPara=" + CatPara + " " + () + '}'; } } /* * Has-A法则 * * */ class PetShop{ private ArrayList<Dog> dogs; private ArrayList<Cat> cats; public PetShop() { Random random = new Random(); dogs = new ArrayList<>(); cats = new ArrayList<>(); for (int i = 0; i < 100; i++) { Dog dog = new Dog(); Cat cat = new Cat(); dog.setame("dog" + i); cat.setame("cat" + i); dog.setPrice(() * 400 + 100); // [0 | |
本站网友 矿震 | 11分钟前 发表 |
HAS-A法则 | |
本站网友 芳草集橙花痘印修护精油 | 20分钟前 发表 |
1) * 400 = [0 | |
本站网友 雨霁天青 | 5分钟前 发表 |
HAS-A法则什么意思了 | |
本站网友 铁岭租房 | 24分钟前 发表 |
price=" + price + " |