当前位置:首页 » 编程语言 » java类设计

java类设计

发布时间: 2022-07-03 19:36:33

‘壹’ java程序设计

成绩我定义成double了,另外平均分我给你保留两位小数:

public class Student {
private String No; //学号
private String name; //姓名
private String gender; //性别
private int age; //年龄
private double chinese; //语文
private double math; //数学
private double english; //英语

//构造函数
public Student(String no,
String name,
String gender,
int age,
double chinese,
double math,
double english) {
No = no;
this.name = name;
this.gender = gender;
this.age = age;
this.chinese = chinese;
this.math = math;
this.english = english;
}

@Override
public String toString() {
return "Student{" +
"No='" + No + ''' +
", name='" + name + ''' +
", gender='" + gender + ''' +
", age='" + age + ''' +
", chinese=" + chinese +
", math=" + math +
", english=" + english +
'}';
}

//计算总分
public double getSum() {
return this.chinese + this.math + this.english;
}

//计算平均分
public double getAverage() {
return (this.chinese + this.math + this.english) / 3;
}
}

测试类:

class Test {
public static void main(String[] args) {
Student student = new Student(
"20190001",
"张三",
"男",
18,
109.5,
89.0,
110.0);
double sum = student.getSum();
double average = student.getAverage();
System.out.println("该学生的信息为:" + student.toString());
System.out.println("该学生的总分为:" + sum);
System.out.println("该学生的平均分为:" + String.format("%.2f", average));
}
}


运行结果:

‘贰’ java类、方法的设计

在Java面向对象编程的过程中,类的设计是一个很有挑战性的工作,不同的人可能对于类的理解不一样,设计出来的类也可能不一样,总结出以下几点关于类设计方面的建议供开发人员参考:
1.永远保持数据私有
保持数据的私有是设计类时,必须重点考虑的问题。保持私有的数据有利于封装。虽然为了保持数据的私有,需要编写设置器与访问期,但这比起不是数据私有要安全的多。
2.永远初始化数据
Java不提供对本地变量的初始化,但它会初始化对象中的实力字段。在设计类时尽量不要依赖于系统的默认值,最好明确的初始化变量。可以通过赋值或构造器对变量进行初始化。
3.不要在一个类中使用太多的基本类型
把相关的基本类型利用封装的功能,设计成一个单独的类;在引用时也同样尽量使用一个单独的类封装同一功能的类似字段。这样做的结果可以使类更易于理解和修改。
例:在一个类中需要引入人的某些属性
Private String peopleName;
Private String peopleSex;
Private String peopleBirthday;
在正中情况下,可以设计一个People类来实现这些字段的封装,在新设计的类中,只需要一个类的实例:
People aPeople = new People();
就可以得到相关的属性值。
4.尽量使类的功能单一化
这句话很难用一句明确的语言来形容,什么样的类是功能单一的呢,可以这样理解,例如设计一个类时,尽量不要将太多的功能放到一起。

‘叁’ java.按照类的设计原则进行类的设计会带来什么好处

在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。

理解抽象类

abstract class和interface在Java语言中都是用来进行抽象类(本文 中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法, 请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢?

在 面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是 所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、 设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、 三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念 在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。

在面向对象领域,抽象类主要用来进行类型隐藏。 我们可以构造出一个固定的一组行为的抽象描 述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个 抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。熟悉OCP的读者一定知 道,为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。

从语法定义层面看abstract class 和 interface

在语法层面,Java语言对于abstract class和interface给出了不同的定义方式,下面以定义一个名为Demo的抽象类为例来说明这种不同。

使用abstract class的方式定义Demo抽象类的方式如下:

abstract class Demo{

abstract void method1();

abstract void method2();





使用interface的方式定义Demo抽象类的方式如下:

interface Demo{

void method1();

void method2();



}

‘肆’ Java的设计模式都有哪些

一共23种设计模式!

引用《软件秘笈-设计模式那点事》书籍:

按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。
创建型模式用来处理对象的创建过程;结构型模式用来处理类或者对象的组合;行为型模式用来对类或对象怎样交互和怎样分配职责进行描述。

创建型模式用来处理对象的创建过程,主要包含以下5种设计模式:
 工厂方法模式(Factory Method Pattern)
 抽象工厂模式(Abstract Factory Pattern)
 建造者模式(Builder Pattern)
 原型模式(Prototype Pattern)
 单例模式(Singleton Pattern)

结构型模式用来处理类或者对象的组合,主要包含以下7种设计模式:
 适配器模式(Adapter Pattern)
 桥接模式(Bridge Pattern)
 组合模式(Composite Pattern)
 装饰者模式(Decorator Pattern)
 外观模式(Facade Pattern)
 享元模式(Flyweight Pattern)
 代理模式(Proxy Pattern)

行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式:
 责任链模式(Chain of Responsibility Pattern)
 命令模式(Command Pattern)
 解释器模式(Interpreter Pattern)
 迭代器模式(Iterator Pattern)
 中介者模式(Mediator Pattern)
 备忘录模式(Memento Pattern)
 观察者模式(Observer Pattern)
 状态模式(State Pattern)
 策略模式(Strategy Pattern)
 模板方法模式(Template Method Pattern)
 访问者模式(Visitor Pattern)

‘伍’ Java常用的几种设计模式

下面给你介绍5种设计模式:

1.单例设计模式

所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生。具体实现步骤如下:

(1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。

(2) 在其内部产生该类的实例化对象,并将其封装成private static类型。

(3) 定义一个静态方法返回该类的实例。

2.工厂设计模式

程序在接口和子类之间加入了一个过渡端,通过此过渡端可以动态取得实现了共同接口的子类实例化对象。

3.代理设计模式

指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如生活中的通过代理访问网络,客户通过网络代理连接网络(具体业务),由代理服务器完成用户权限和访问限制等与上网相关的其他操作(相关业务)。

4.观察者设计模式

所谓观察者模式,举个例子现在许多购房者都密切观察者房价的变化,当房价变化时,所有购房者都能观察到,以上的购房者属于观察者,这便是观察者模式。

java中可以借助Observable类和Observer接口轻松实现以上功能。当然此种模式的实现也不仅仅局限于采用这两个类。

5.适配器模式

如果一个类要实现一个具有很多抽象方法的接口,但是本身只需要实现接口中的部分方法便可以达成目的,所以此时就需要一个中间的过渡类,但此过渡类又不希望直接使用,所以将此类定义为抽象类最为合适,再让以后的子类直接继承该抽象类便可选择性的覆写所需要的方法,而此抽象类便是适配器类。

‘陆’ java里如何设计这个类

package com.;

import java.util.Date;

public class Computer {

public Key key;

public Screen screen;

public Mouse mouse;

public Date time;

public Computer(Key key, Screen screen, Mouse mouse, Date time) {

this.key = key;

this.screen = screen;

this.mouse = mouse;

this.time = time;

}

public Key getKey() {

return key;

}

public void setKey(Key key) {

this.key = key;

}

public Screen getScreen() {

return screen;

}

public void setScreen(Screen screen) {

this.screen = screen;

}

public Mouse getMouse() {

return mouse;

}

public void setMouse(Mouse mouse) {

this.mouse = mouse;

}

public Date getTime() {

return time;

}

public void setTime(Date time) {

this.time = time;

}

}

class Key {

}

class Screen {

}

class Mouse {

}

‘柒’ java设计一个人的类


importjava.util.Random;

publicclassPerson{
//姓名
privateStringname;
//性别
privateStringsex;
//年龄
privateintage;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetSex(){
returnsex;
}
publicvoidsetSex(Stringsex){
this.sex=sex;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
//方法一
publicvoidfirstfunction(){
this.setName("风吹激动单达产");
this.setSex("人妖");
System.out.println("睡觉:"+this.getName()+"正在睡觉。");
System.out.println("跳舞:一个"+this.getSex()+"人正在跳舞,左三圈右三圈...");
}
//方法二
publicStringsecondfunction(){
this.setName("风吹激动单达产");
Stringhua="";
Randomra=newRandom();
intaa=(int)(0+Math.random()*(2+1));
if(aa==0){
hua="玫瑰花";
}elseif(aa==1){
hua="百合花";
}elseif(aa==2){
hua="月季花";
}else{
hua="菊花";
}
returnthis.getName()+"送给潘金莲一束"+hua;
}
//方法三
@SuppressWarnings("unused")
publicvoidthirdfunction(intmoney,Stringname){
this.setName("风吹激动单达产");
if(name!=null||name!=""){
System.out.println(name+"正在打"+this.getName());
}else{
if(money<=0){
System.out.println("你是小气鬼。");
}elseif(money>0&&money<=50){
System.out.println("谢谢你!");
}elseif(money>50&&money<=10000){
System.out.println("你是个好人!");
}else{
System.out.println("你是我的救星啊!我代表八辈祖宗感谢你!做鬼都不会放过你的!");
}
}
}
//方法四
(intmoney){
Stringyan="";
switch(money){
case0:
yan="无烟";
break;
case1:
yan="无烟";
break;
case2:
yan="新石家庄烟";
break;
case5:
yan="七匹狼烟";
break;
case6:
yan="红石二代烟";
break;
case7:
yan="红塔山烟";
break;
case10:
yan="玫瑰钻烟";
break;
case15:
yan="金石烟";
break;
case23:
yan="玉溪烟";
break;
case65:
yan="中华烟";
break;
default:
yan="无烟";
break;
}
returnyan;
}
publicintfourthfunctionoushu(intoushu){
intstart=0;
if(oushu>1){
for(inti=1;i<oushu;i++){
if(i%2==0){
start++;
}
}
}

returnstart;
}
publicintfourthfunctiondanshu(intone,inttwo){
intsum=0;
if(one<two){
for(inti=one;i<two;i++){
sum=sum+i;
}
sum=sum-one;
}elseif(one>two){
for(inti=two;i<one;i++){
sum=sum+i;
}
sum=sum-two;
}else{
sum=0;
}

returnsum;
}
publicstaticvoidmain(String[]args){
Personss=newPerson();

System.out.println(ss.fourthfunctionmoney(5));
}
}

‘捌’ 关于java的类设计问题 - 如何使用接口和抽象类

我的想法是这样:
四种系统和肝脏都可以设计成类,互相之间没有继承关系。
一般来说,类A继承类B,对应于现实中的“A是B”,可以借此判断是否应该用继承。比如,钢琴是乐器,所以class Piano可以继承class Instrument。在这里,血液循环系统是肝脏吗?显然不是,所以class BloodCycle继承class Liver在概念上就是不合适的。
至于一个人只有一个肝的问题,在初始化4个系统时不要初始化肝脏就行了。类BloodCycle和类Digesting都有一个类Liver的内部成员humanLiver,不初始化,而是开放一个接口,让调用者来创建一个Liver对象然后赋给BloodCycle对象和Digesting对象。伪码:
BloodCycle bloodCycle = new BloodCycle();
Digesting digesting = new Digesting();
Liver liver = new Liver();
bloodCycle.setHumanLiver(liver);
digesting.setHumanLiver(liver);

这样所有问题都解决了。Java里所有对象变量都是指针,所以bloodCycle和digesting里的humanLiver指向的是同一个对象,即共用同一个人的肝脏,符合现实生活。

‘玖’ JAVA如何设计实体类

如果说的是对应数据库信息的实体类,……对Java来说,和普通的类一模一样。只是每个类设计者有不同的用法,比如说集合类,作为各种数据结构使用。实体类主要作为存储数据库信息使用。两者Java上有区别么?没有,只是代码不一样,用法不一样。

热点内容
怎么编程套料 发布:2025-02-04 02:50:31 浏览:205
副编译 发布:2025-02-04 02:05:25 浏览:613
解压按摩师 发布:2025-02-04 01:21:31 浏览:424
linuxssh限制 发布:2025-02-04 01:20:40 浏览:697
脚本式是什么 发布:2025-02-04 01:06:24 浏览:248
手机wps密码怎么取消密码 发布:2025-02-04 00:51:44 浏览:596
算法逻辑表 发布:2025-02-04 00:51:44 浏览:241
零售股票如何配置主线 发布:2025-02-04 00:51:07 浏览:948
预算法施行时间是 发布:2025-02-04 00:50:30 浏览:344
世界ol上传照片 发布:2025-02-04 00:34:13 浏览:63