Java 面向对象设计题3
11. 用户类设计11.定义一个用户类(User)包含用户名(username)和密码(password)属性提供静态方法验证密码是否有效(长度至少为6)并提供getter和setter方法。classUser{privateStringusername;privateStringpassword;publicUser(Stringusername,Stringpassword){this.usernameusername;this.passwordpassword;}publicstaticbooleanvalidatePassword(Stringpassword){returnpassword!nullpassword.length()6;}// getter和setter方法publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.usernameusername;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.passwordpassword;}}12. 图书类设计12.定义一个图书类(Bo0k)包含书名(tte)和作者(author)属性提供一个静态方法来打印所有图书Book[]的信息并提供getter和setter方法。classBook{privateStringtitle;privateStringauthor;publicBook(Stringtitle,Stringauthor){this.titletitle;this.authorauthor;}publicstaticvoidprintAllBooks(Book[]books){for(inti0;ibooks.length;i){System.out.println(第(i1)本书《books[i].title》作者books[i].author);}}// getter和setter方法publicStringgetTitle(){returntitle;}publicvoidsetTitle(Stringtitle){this.titletitle;}publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.authorauthor;}}13. 学生类计算平均成绩13.定义一个学生类(Student)包含姓名(name)和成绩(score)属性提供一个静态方法计算所有学生的平均成绩并提供getter和setter方法。classStudentWithScore{privateStringname;privatedoublescore;publicStudentWithScore(Stringname,doublescore){this.namename;this.scorescore;}publicstaticdoublecalculateAverageScore(StudentWithScore[]students){if(students.length0)return0;doubletotal0;for(StudentWithScorestudent:students){totalstudent.score;}returntotal/students.length;}// getter和setter方法publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.namename;}publicdoublegetScore(){returnscore;}publicvoidsetScore(doublescore){this.scorescore;}}14. 学生类找出最高分14.定义一个学生类(Student)包含姓名(name)和成绩(score)属性。提供一个静态方法来找出最高分的学生并提供geter和setter方法。classStudentHighScore{privateStringname;privatedoublescore;publicStudentHighScore(Stringname,doublescore){this.namename;this.scorescore;}publicstaticStudentHighScorefindTopStudent(StudentHighScore[]students){if(students.length0)returnnull;StudentHighScoretopStudentstudents[0];for(inti1;istudents.length;i){if(students[i].scoretopStudent.score){topStudentstudents[i];}}returntopStudent;}// getter和setter方法publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.namename;}publicdoublegetScore(){returnscore;}publicvoidsetScore(doublescore){this.scorescore;}}15. 字符串工具类15.写一个简单的String工具类。提供几个基本的方法检查字符串是否为空、首字母大写、反转字符串。classStringUtils{publicstaticbooleanisEmpty(Stringstr){returnstrnull||str.isEmpty();}publicstaticStringcapitalizeFirstLetter(Stringstr){if(isEmpty(str))returnstr;returnCharacter.toUpperCase(str.charAt(0))str.substring(1);}publicstaticStringreverseString(Stringstr){if(isEmpty(str))returnstr;returnnewStringBuilder(str).reverse().toString();}}16. 员工类及子类16.定义一个员工类Employee包含姓名和年龄属性以及一个显示信息的方法showInfo0。再定义两个子类Manager和Developer,分别重写showinfo()方法。在Main方法中创建Manager和Developer对象并通过向上转型为Employee类型调用showinfo()方法classEmployee{protectedStringname;protectedintage;publicEmployee(Stringname,intage){this.namename;this.ageage;}publicvoidshowInfo(){System.out.println(员工姓名name年龄age);}}classManagerextendsEmployee{privateStringdepartment;publicManager(Stringname,intage,Stringdepartment){super(name,age);this.departmentdepartment;}OverridepublicvoidshowInfo(){System.out.println(经理姓名name年龄age部门department);}}classDeveloperextendsEmployee{privateStringprogrammingLanguage;publicDeveloper(Stringname,intage,StringprogrammingLanguage){super(name,age);this.programmingLanguageprogrammingLanguage;}OverridepublicvoidshowInfo(){System.out.println(开发人员姓名name年龄age编程语言programmingLanguage);}}// Main方法演示向上转型publicclassMain{publicstaticvoidmain(String[]args){Employeeemp1newManager(张三,35,技术部);Employeeemp2newDeveloper(李四,28,Java);emp1.showInfo();// 调用Manager的showInfo()emp2.showInfo();// 调用Developer的showInfo()}}17. 支付类及子类17.定义一个支付类Payment,包含一个抽象方法pay()。再定义两个子类CreditCardPayment和CashPayment,分别实现pay()方法。在Main方法中创建CreditCardPayment和CashPayment象并通过向上转型为Payment类型调用pay()方法abstractclassPayment{publicabstractvoidpay();}classCreditCardPaymentextendsPayment{Overridepublicvoidpay(){System.out.println(使用信用卡支付);}}classCashPaymentextendsPayment{Overridepublicvoidpay(){System.out.println(使用现金支付);}}// Main方法演示向上转型publicclassPaymentMain{publicstaticvoidmain(String[]args){Paymentpayment1newCreditCardPayment();Paymentpayment2newCashPayment();payment1.pay();// 输出使用信用卡支付payment2.pay();// 输出使用现金支付}}18. 形状接口及实现类18.定义一个形状接口Shape包含一个方法draw()。再定义两个实现类CircleShape和SquareShape分别实现draw()方法。在Main方法中创建CircleShape和SquareShape对象并通过向上转型为Shape类型调用draw()方法。interfaceShapeInterface{voiddraw();}classCircleShapeimplementsShapeInterface{Overridepublicvoiddraw(){System.out.println(绘制圆形);}}classSquareShapeimplementsShapeInterface{Overridepublicvoiddraw(){System.out.println(绘制正方形);}}// Main方法演示向上转型publicclassShapeMain{publicstaticvoidmain(String[]args){ShapeInterfaceshape1newCircleShape();ShapeInterfaceshape2newSquareShape();shape1.draw();// 输出绘制圆形shape2.draw();// 输出绘制正方形}}19. 向上转型与向下转型19.定义一个父类Person和一个子类Student,都有introduce方法介绍自己使用向上转型和向下转型调用introduce。classPerson{protectedStringname;publicPerson(Stringname){this.namename;}publicvoidintroduce(){System.out.println(我是name);}}classStudentForCastextendsPerson{privateintstudentId;publicStudentForCast(Stringname,intstudentId){super(name);this.studentIdstudentId;}Overridepublicvoidintroduce(){System.out.println(我是学生name学号studentId);}publicvoidstudy(){System.out.println(name正在学习);}}// 演示向上转型和向下转型publicclassCastDemo{publicstaticvoidmain(String[]args){// 向上转型PersonpersonnewStudentForCast(小明,1001);person.introduce();// 调用Student的introduce方法// 向下转型if(personinstanceofStudentForCast){StudentForCaststudent(StudentForCast)person;student.study();// 调用Student特有方法}}}20. 多态应用20.定义一个Person基类和子类Administrator、Student和Teacher。每个子类都应重写一个show方法来展示各自类型的信息。Main方法中创建这些类的实例并调用一个register方法来展示每个人的信息。register方法应接受一个Person类型的参数。classPersonBase{protectedStringname;publicPersonBase(Stringname){this.namename;}publicvoidshow(){System.out.println(这是Person);}}classAdministratorextendsPersonBase{publicAdministrator(Stringname){super(name);}Overridepublicvoidshow(){System.out.println(管理员name - 管理系统);}}classStudentPolyextendsPersonBase{publicStudentPoly(Stringname){super(name);}Overridepublicvoidshow(){System.out.println(学生name - 学习课程);}}classTeacherextendsPersonBase{publicTeacher(Stringname){super(name);}Overridepublicvoidshow(){System.out.println(教师name - 教授课程);}}publicclassPolyMain{publicstaticvoidregister(PersonBaseperson){person.show();}publicstaticvoidmain(String[]args){AdministratoradminnewAdministrator(王老师);StudentPolystudentnewStudentPoly(小红);TeacherteachernewTeacher(李教授);register(admin);// 输出管理员王老师 - 管理系统register(student);// 输出学生小红 - 学习课程register(teacher);// 输出教师李教授 - 教授课程}}说明代码涵盖了所有面向对象设计原则包括封装通过private字段和getter/setter方法继承通过extends关键字实现类的继承关系多态通过方法重写和向上转型实现多态行为抽象通过抽象类和接口实现抽象概念接口定义契约实现多态性工具类提供静态方法供其他类调用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2411068.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!