(1)オブジェクト指向の起源:
1。60年代半ばのソフトウェア危機-ソフトウェアの後方生産方法は、急速に増大するコンピュータソフトウェアの需要に対応できず、ソフトウェア開発の過程で一連の深刻な問題を引き起こします。とメンテナンス。
自宅軟禁の標準化と再利用性は業界で高く評価されており、労働の重複を避け、ソフトウェア危機を緩和する上で重要な役割を果たしてきました。
2.すべてが
オブジェクトです。すべてがオブジェクトと見なすことができます。
3.オブジェクト指向の考え方を使用して、世界の表示を記述します。
基本的な手順
(1)クラスを見つける
(2)属性(名詞
)を見つける(3)動作の
データ抽象化(動詞)を見つける。
定義クラス
//演员类
public calss Actor{
//共同特性
public String name;
public char sex;
public String job;
public int age;
//共有属性
public void eat(){
........}
public void performs(){
..........}
}
4.クラス図を使用してクラスを記述します-UML
+はパブリックを
表し
ます-プライベート参照ツールを表します:StarUML、astah(クラックされたバージョンが利用可能)。
Astahツールをエクスポートすると、クラスが自動的に生成されます。
概要:
オブジェクト指向の利点:大規模なプログラム用に生まれた新しいコード編成方法で、小規模なプログラムにはオブジェクト指向のメリットはありません。
オブジェクト指向の抽象化の原則
クラスを設計するときは、クラスを具象クラスに向けるのではなく、抽象クラスまたはインターフェースに向けてください。
(2)デモンストレーションの例
要件の説明
1.クラスを定義してオブジェクトを作成します
2.オブジェクトの情報を印刷します
//第一个类
//创建劳拉和孙悟空的类
//创建游戏角色类Role
public calss Role{
/*名称属性*/
public String name;
//等级
public int level;
//职业
public String job;
//释放技能
public void sendskill;
public void doSkill(){
if(name.equals("劳拉")){
System.out.println("劳拉释放了她的必杀技————隐身夺萃刃");
}else if(name.euqals("孙悟空")){
System.out.println("孙悟空释放了他的技能————吃俺老孙一棒")
}
}
}
//第二个类RoleTest
//实例化
//声明一个Role类型的变量,Role role1相当于在栈空间中申请了一块空间role1,new Role();相当于在堆空间里分配了一块空间;
Role role1=new Role();//把申请的地址赋给了role1;
role1.name="劳拉";
role1.level=25;
role.job="考古学家";
//调用方法释放劳拉的技能
role.doSkll();
//System.out.println(role1)可以打印出哈希码的值
Role role2;
role2=new Role();
role2.name="孙悟空";
role2.level=99;
role2.job="齐天大圣";
//调用方法释放孙悟空的技能
role2.doSkill();
(3)
コンストラクターの使用コンストラクターの特徴:
1。戻り値なし
2.メソッド名とクラス名は一貫しています。
例1
public Role(String name1,int level1,String job1){
name=name1;
level=level1;
job=job1;
}
//调用
Role role1=new Role("孙悟空","99","齐天大圣"){
role1.show();
}
例2
public class Circle{
//圆的半径
public double radious;
//圆的周长
public double perimeter;
//圆的面积
public double area;
//默认构造
public Circle(){
inputRadious();
}
//带参构造
public Circlev2(double radious){
if(radious){
radious=radious();
}else{
inputradious();
}
}
public void inputradious(){
Scanner input=new Scanner(System.in);
System.out.println("请输入半径");
radious=input.next.Double();
input.close();
}
public void showPerimeter(){
if(radious==0){
inputRaius();//如果用户没输入半径,强制用户输入半径
}
perimeter=2*Math.PI*radious;
System.out.println("周长为"+perimeter);
}
public void shouArea(){
area=radious*radious*Math.PI;
System.out.println("面积为"+area);
}
}
//测试类
//(1)构造方法生成
Circlev2 circle=new Circlev2();
circle.showArea();
//(2)重载
public class CircleTest{
public static void main(String[] args){
Circle circle=new Circle();
circle.inputRadious();
circle.shouPerimeter();
circle.shouArea();
}
}