Heim  >  Artikel  >  Java  >  5. Objektorientiert vs. prozessorientiert in Java

5. Objektorientiert vs. prozessorientiert in Java

零下一度
零下一度Original
2017-06-25 10:45:191045Durchsuche

1. Objektorientierte vs. prozessorientierte

 1 /* 2  * 理解一:人开门 3  * 面向过程:人 打开门 4  * 面向对象: 5  * 人{ 6  *    打开(){ 7  *        门。开开(); 8  *    } 9  * }10  * 门{11  *     开开(){12  *     }13  * }14  * 
15  * 理解二:人把大象装进冰箱16  * 面向过程:17  *     1、打开冰箱;18  *     2、把大象放进去;19  *     3、关闭冰箱门;20  * 面向对象:21  * 人{22  *     打开(冰箱){冰箱.开开()}23  *     操作(大象){大象。进入(冰箱)}24  *     关闭(冰箱){冰箱。合上()}25  * }26  * 大象{27  *     进入(冰箱){}28  * }29  * 冰箱{30  *     开开(){}31  *     合上(){}32  * }33  */

2. Objektorientierte Programmierung konzentriert sich auf das Design von Klassen!

2.1. Egal wie groß ein Projekt oder Projekt ist, es muss aus Klassen nacheinander bestehen.

2.2. Klassen sind abstrakt, wie Zeichnungen für die Herstellung eines Autos. Die spezifischen Autos werden gemäß den Zeichnungen hergestellt, die eigentlich Instanziierungen der Klasse sind

 1 /* 2  * 1、面向对象的编程关注于类的设计 3  * 2、设计类实际上就是设计类的成员 4  * 3、基本的类的成员,属性(成员变量或Field)&方法(Method) 5  */ 6 public class TestPerson { 7     public static void main(String[] args) { 8         Person p1 = new Person(); 9         p1.info();10         11         p1.name = "钟超";12         p1.age = 21;13         p1.sex = true;14         p1.info();15         16         p1.setName("张三");//p1.name = "张三"17         p1.info();18         19         Person p2 = p1;20         System.out.println("P1:" + p1);21         System.out.println("P2:" + p2);22         p2.info();23         24         p2 = new Person();25         System.out.println("P2:" + p2);26         p2.info();27         //实例化Scanner类的对象,通过此对象.nextXxx的方法进行调用,完成相应的功能;28         Scanner s = new Scanner(System.in);29         int i = s.nextInt();30         31         Person p3 = new Person();32         p3.info();33     }34 }35 //类:是抽象的。36 class Person{37     //1.属性38     String name;39     int age = 10;40     boolean sex;41     42     //2.方法43     public void eat(){44         System.out.println("人吃饭");45     }46     public void sleep(){47         System.out.println("人睡觉");48     }49     50     public String getName(){51         return name;52     }53     public void setName(String n){54         name = n;55     }56     57     public void info(){58 //        eat();59 //        sleep();60         System.out.println("name:" + name + "age:" + age + "sex:" + sex);61     }62 }

3. Die Idee, ein Projekt (oder eine Funktion) abzuschließen

 3.1. Ob das Objekt der Klasse existiert, die ausgeführt werden soll

 3.2. Rufen Sie einfach die Attribute oder Methoden in der entsprechenden Klasse auf

3.3. Wenn es nicht existiert, müssen Sie ein Objekt der Klasse erstellen. Es wird sogar gesagt, dass Klassen entworfen werden müssen, wenn keine Klassen vorhanden sind.

Drei Hauptlinien der objektorientierten Programmierung:

1. Klassen und ihre Komponenten: Attribute, Methoden, Konstruktoren, Codeblöcke, interne Klassen

2. Merkmale der objektorientierten Programmierung: Kapselung, Vererbung, Polymorphismus (Abstraktion)

3. Andere Schlüsselwörter: Dieses Superpaket importiert eine statische endgültige abstrakte Schnittstelle. ..

Klasse:

1. Konzentrieren Sie sich auf das Design der Klasse

2. Komponenten der Klasse:

1. Attribute (Mitgliedsvariablen). , Feld)

 2. Methoden (Mitgliedsmethoden, Funktionen, Methode)

3. Über Attribute:

4. Methoden:

  1 /*  2  * 一、面向对象思想的落地法则一:  3  * 1.设计类并设计类的成员(成员变量&方法)  4  * 2.通过类来创建类的对象(也称作类的实例化)  5  * 3、通过“对象。属性”或“对象。方法”来调用,完成相应的功能  6  * 
  7  * 二、创建的多个对象,彼此各自拥有一套类的属性,当对其中一个对象的属性进行修改时。  8  * 不会影响到其他对象的属性值。  9  * 
 10  * 三、类的属性(成员变量) 11  *     成员变量    VS     局部变量 12  *     相同点:1、遵循变量声明的格式;数据类型 变量名 = 初始化值; 13  *          2、都有作用域: 14  *     不同点:1、声明的位置的不同:成员变量:生命在类里,方法外边; 15  *                               局部变量:声明在方法内,方法的形参部分,代码块内 16  *          2、成员变量的修饰符有四个:public(公共的) private(私有的) protected 缺省 17  *                    局部变量没有修饰符:与所在的方法的修饰符一样; 18  *          3、初始化值:一定会有初始化值; 19  *                   成员变量:如果在声明的时候,不显示的赋值,那么不同的数据类型会有不同的默认初始化值; 20  *                 byte short int long = 0; 21  *                 float double = 0。0; 22  *                 char = 空格; 23  *                 boolean = false; 24  *                 引用类似的变量  = null; 25  *                  局部变量:一定要显示的赋值(局部变量没有默认初始化值); 26  *          4、二者在内存中存放的位置不同,成员变量在堆空间中,局部变量在栈空间中; 27  * 总结:关于变量的分类:1、按照数据类型的不同:基本数据类型(8种)&引用数据类型 28  *                  2、按照声明位置的不同::成员变量&局部变量 29  * 
 30  * 四、类的方法:提供某种功能的实现 31  *         1、实例    public void eat(){方法体} 32  *               public String getName(){} 33  *               public void setName(String n){} 34  *         2、格式:权限修饰符  返回值类型(void:无返回值/具体返回值) 方法名(形参){} 35  *         3、关于返回值类型 void:表名此方法不需要返回值 
 36  *                     有返回值的:在方法的最后一定有return + 返回值类型对应的变量 37  *           记忆:void与return不可以同时出现在一个方法内。 38  *         4、方法内可以调用本类的其他方法和属性,但是不能再方法内在定义其他方法; 39  * 
 40  * ClassRoom Car ... 41  */ 42 public class Zoo { 43     public static void main(String[] args) { 44         //基本数据类型的声明:数据类型 变量名 = 初始化值; 45         int i = 10; 46         //1.类的实例化:如下的a1就是一个实实在在的对象 47         Animal a1 = new Animal(); 48         //int[] arr = new int[10]; 49         //通过对象调用属性 50         a1.name = "花花"; 51         a1.age = 3; 52         System.out.println("name:" + a1.name + "\t" + "age:" + a1.age); 53         //通过对象调用方法 54         a1.eat(); 55         a1.sleep(); 56          57         //在创建一个对象 58         Animal a2 = new Animal(); 59         System.out.println("name:" + a2.name + "\t" + "age:" + a2.age); 60         a2.name = "小花"; 61         System.out.println("name:" + a1.name + "\t" + "age:" + a1.age); 62         System.out.println("name:" + a2.name + "\t" + "age:" + a2.age); 63         //a3与a1一样,a3不意味着相较于a1重新创建的一个对象,而是a1与a3共用一个对象实体 64         Animal a3 = a1; 65         System.out.println("name:" + a3.name + "\t" + "age:" + a3.age); 66         a3.name = "维尼熊"; 67         System.out.println("name:" + a1.name + "\t" + "age:" + a1.age); 68          69         System.out.println(a2.getName()); 70         System.out.println(a2.desc()); 71     } 72 } 73  74 class Animal{ 75     //1.属性 76     String name; 77     int age; 78     //2.方法 79     public void eat(){ 80         System.out.println("动物进食"); 81     } 82     public void sleep(){ 83         System.out.println("动物休眠"); 84         //return; 85     } 86     public String getName(){ 87         return name; 88     } 89     public int getAge(){ 90         return age; 91         //其后不可以声明语句 92         //System.out.println("Hello"); 93     } 94     //当通过对象调用此方法是,会将方法的返回值提供给方法的调用者,也就是当前的对象。 95     public String desc(){ 96         if(age > 2){ 97             return "恰同学少年"; 98         }else{ 99             return "还是看动画片的 年龄";100         }101     }102     public void setName(String n){103         name = n;104     }105     public void addAge(){106         int i = 2;107         age += i;108     }109     public void info(){110         //可以在方法内调用本类的其他方法,但是不可以在方法内在定义新德尔方法111         eat();112         sleep();113 //        public void breathJ(){114 //            System.out.println("呼吸");115 //        }116     }117     //System.out.println("Hello!");118 }

5. Die erste Regel zur Umsetzung objektorientierter Programmierideen:

1. Klassen und Klassenkomponenten entwerfen und erstellen

2. Klassenobjekte instanziieren; >

3, Vervollständigen Sie eine bestimmte Funktion in Form von „object.property“ oder „object.method“

6. Klasseninitialisierungsspeicheranalyse:

6.1. Speicherteilungsstruktur:

Stapel: lokale Variablen, Objektreferenznamen, Array-Referenznamen

Heap: „Dinge“ von neu (zum Beispiel: Objektentitäten, Array-Entitäten), einschließlich Member-Variablen

Methodenbereich: Enthält Zeichenfolgenkonstanten

Statische Domäne: Als statisch deklarierte Variablen

6.2 Auf der Grundlage des Verständnisses müssen Sie lernen, grundlegende Klassenobjekte zu erstellen, die im Speicher ausgeführt werden.

7. Überladung von Methoden:

Anforderungen: 1. In derselben Klasse

* 2. Die Methodennamen müssen gleich sein; Liste ist unterschiedlich; 1. Die Anzahl der Parameter ist unterschiedlich;
* 4. Die Überladung der Methode hat nichts mit dem Rückgabewerttyp der Methode zu tun; 🎜>


Das obige ist der detaillierte Inhalt von5. Objektorientiert vs. prozessorientiert in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn