面向对象流水线
有理数的类封装
public class Rational {
int numerator = 1;
int denominator =1;
void setNumerator(int a){
int c=f(Math.abs(a),denominator);
numerator = a/c;
denominator=denominator/c;
if (numerator<0&&denominator<0){
numerator = -numerator;
denominator = -denominator;
}
}
void setDenominator(int b){
int c=f(numerator,Math.abs(b));
numerator = numerator/c;
denominator=b/c;
if (numerator<0&&denominator<0){
numerator = -numerator;
denominator = -denominator;
}
}
int getNumerator(){
return numerator;
}
int getDenominator(){
return denominator;
}
int f(int a,int b){
if (a==0){
return 1;
}
if (a<b){
int t = 0;
t = a;
a = b;
b = t;
}
int r = a%b;
while (r!=0){
a = b;
b = r;
r = a%b;
}
return b;
}
Rational add(Rational r){
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator*b+denominator*a;
int newDenominator = denominator*b;
Rational result = new Rational();
result.setNumerator(newNumerator);
result.setDenominator(newDenominator);
return result;
}
Rational sub(Rational r){
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator*b-denominator*a;
int newDenominator = denominator*b;
Rational result = new Rational();
result.setNumerator(newNumerator);
result.setDenominator(newDenominator);
return result;
}
Rational muti(Rational r){
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator*a;
int newDenominator = denominator*b;
Rational result = new Rational();
result.setNumerator(newNumerator);
result.setDenominator(newDenominator);
return result;
}
Rational div(Rational r){
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator*b;
int newDenominator = denominator*a;
Rational result = new Rational();
result.setNumerator(newNumerator);
result.setDenominator(newDenominator);
return result;
}
}
public class RationalTest {
public static void main(String[] args) {
Rational r1 = new Rational();
Rational r2 = new Rational();
r1.setNumerator(3);
r1.setDenominator(5);
r2.setNumerator(1);
r2.setDenominator(6);
Rational result = r1.add(r2);
int a = result.getNumerator();
int b = result.getDenominator();
System.out.println("3/5 + 1/6 = "+a+"/"+b);
}
}
- Shift+Tab代码整体向前移,Tab代码整体向后移
搭建流水线
public class SingGame {
public static void main(String[] args) {
Line line = new Line();
line.giveScore();
}
}
public class Line {
InputScore inputScore;
DelScore delScore;
ComputerAver computer;
Line() {
computer = new ComputerAver();
delScore = new DelScore(computer);
inputScore = new InputScore(delScore);
}
public void giveScore(){
inputScore.inputScore();
}
}
public class InputScore {
DelScore delScore;
InputScore(DelScore delScore) {
this.delScore = delScore;
}
public void inputScore(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入评委数:");
int count = scanner.nextInt();
System.out.println("请输入分数:");
double[] a = new double[count];
for (int i = 0; i <count ; i++) {
a[i] = scanner.nextDouble();
}
delScore.doDelete(a);
}
}
public class DelScore {
ComputerAver computer;
DelScore(ComputerAver computer) {
this.computer = computer;
}
public void doDelete(double[] a){
Arrays.sort(a);
System.out.println("去掉一个最高分:"+a[a.length-1]);
System.out.println("去掉一个最低分:"+a[0]);
double[] b = new double[a.length-2];
for (int i = 0; i < b.length; i++) {
b[i]=a[i+1];
}
computer.giveAver(b);
}
}
public class ComputerAver {
public void giveAver(double[] b){
double sum = 0;
for (int i = 0; i < b.length; i++) {
sum+=b[i];
}
double aver = sum/b.length;
System.out.println("选手最后得分:"+aver);
}
}
- 子类和父类在同一个包中时,除了private定义的属性方法,其他都可以继承
- 子类和父类不在同一个包中时,private和友好变量度都不能继承,可以继承protected和public
- 创建子类对象时,父类的成员变量也都分配了内存空间
- 子类有一部分方法是从父类继承的,这些方法可以操作子类未继承的变量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人