使用100%面向過程的方式來寫java程式

來源:互聯網
上載者:User

標籤:個人   現在   複雜   logging   pop   展示   使用   需要   寫法   

java是強制寫class關鍵字的語言,不能有獨立的函數游離在類外出現在檔案中,這和python c++ php都不同,後面的都可以單獨在類外寫函數,所以java被稱為是純物件導向的語言,py和php都不是強制向對象的寫法。

 

儘管如此,有的笨瓜,還是打死也寫不出類來,而且強烈的反對寫類,認為面向過程已經能搞定一切了,發明c++這種語言的人就是閑的沒事,c++對於c來說是完全的多餘沒必要。

但是當被公司要求寫java時候,就會蒙蔽,覺得沒有物件導向經驗,很難轉變,此篇示範完全的面向過程的思維來寫java。讓從不用物件導向的py人員可以不用物件導向來寫java。

 

首先是兩個縮寫。物件導向編程 oop, 面向過程編程pop

 

先來一個物件導向的java常規寫法,再來一個完全的反對物件導向的寫法。

PersonOOP.java檔案。

 

import java.util.logging.*;/** * 一個使用物件導向寫的人類 * @author bfzs */public class PersonOOP {    private String name;    private int age;    private final String eyeColor;    private float weight;    public float height;    private static Logger logger = Logger.getLogger(PersonOOP.class.toString());    public PersonOOP(String personName, int age, String eyeColor, float weight, float height) {        name = personName;        this.age = age;        this.eyeColor = eyeColor;        this.weight = weight;        this.height = height;    }    /**     * 年齡增長     * @param growingAge 要增加的年齡     */    public void growAge(int growingAge) {        age = age + growingAge;    }    /**     * 展示年齡的方法     */    public void showAge() {        logger.info(name + " 的年齡是 " + age);    }    /**     * 體重增長     *     * @param growingWeight 要增加的體重     */    public void growWeight(float growingWeight) {        weight = weight + growingWeight;    }    public void showWeight() {        logger.info(name + " 的體重是 " + weight);    }    /**     * 身高增長     *     * @param growingHeight 要增加的身高     */    public void growHeight(float growingHeight) {        height = height + growingHeight;    }    public void showHeight() {        System.out.println(name + " 的身高是 " + height);    }    public void showEyeColor() {        logger.info(name + " 的眼睛顏色是 " + eyeColor);    }    public void walk() {        logger.info(name + " 在走路");    }}

 

下面是調用PersonOOP類的方式:

TestOOP.java,主要是展示人的屬性,然後用一些方法來改變人的屬性,然後再展示人的屬性

public class TestOOP {    public static void main(String[] args) {        //xiaohong        PersonOOP xiaohong = new PersonOOP("xiaohong", 16, "black", 40.0f, 153.1f);        xiaohong.showAge();        System.out.println(xiaohong.height);        xiaohong.showWeight();        xiaohong.showEyeColor();        xiaohong.walk();        xiaohong.growAge(2);        xiaohong.growWeight(10.0f);        xiaohong.growHeight(5.0f);        xiaohong.showAge();        System.out.println(xiaohong.height);        xiaohong.showWeight();        // *******************************************************************************************        //xiaomin        PersonOOP xiaomin = new PersonOOP("xiaomin", 18, "blue", 50.0f, 163.1f);        xiaomin.showAge();        System.out.println(xiaomin.height);        xiaomin.showWeight();        xiaomin.showEyeColor();        xiaomin.walk();        xiaomin.growAge(3);        xiaomin.growWeight(10.0f);        xiaomin.growHeight(5.0f);        xiaomin.showAge();        System.out.println(xiaohong.height);        xiaohong.showWeight();    }}

 

下面來展示的是用完全面向過程的思維來寫人類

PersonPOP.java

import java.util.logging.*;/** * 一個使用100%純面向過程寫的人類 * @author bfzs */public class PersonPOP {    private static Logger logger = Logger.getLogger(PersonOOP.class.toString());    /**     * 設定為私人方法,禁止此類調用建構函式進行執行個體化,僅能由類名調用方法不能用執行個體調用方法,當作工具類使用     */    private PersonPOP() {    }    public static int growAge(int age, int growingAge) {        age = age + growingAge;        return age;    }    public static void showAge(String name, int age) {        logger.info(name + " 的年齡是 " + age);    }    public static float growWeight(float weight, float growingWeight) {        weight = weight + growingWeight;        return weight;    }    public static void showWeight(String name, float weight) {        logger.info(name + " 的體重是 " + weight);    }    public static float growHeight(float height, float growingHeight) {        height = height + growingHeight;        return height;    }    public static void showHeight(String name, float height) {        System.out.println(name + " 的身高是 " + height);    }    public static void showEyeColor(String name, String eyeColor) {        logger.info(name + " 的眼睛顏色是 " + eyeColor);    }    public static void walk(String name) {        logger.info(name + " 在走路");    }}

 

下面是TestPOP.java檔案,主要是調用PersonPOP,來展示人的屬性和改變人的屬性。

public class TestPOP {    public static void main(String[] args) {        //xiaohong        String xiaohongName = "xiaohong";        int xiaohongAge = 16;        String xiaohongEyeColor = "black";        float xiaohongWeight = 40.0f;        float xiaohongHeight = 153.1f;        PersonPOP.showAge(xiaohongName, xiaohongAge);        System.out.println(xiaohongHeight);        PersonPOP.showWeight(xiaohongName, xiaohongWeight);        PersonPOP.showEyeColor(xiaohongName, xiaohongEyeColor);        PersonPOP.walk(xiaohongName);        xiaohongAge = PersonPOP.growAge(xiaohongAge, 2);        xiaohongWeight = PersonPOP.growWeight(xiaohongWeight, 10.0f);        xiaohongHeight = PersonPOP.growHeight(xiaohongHeight, 5.0f);        PersonPOP.showAge(xiaohongName, xiaohongAge);        System.out.println(xiaohongHeight);        PersonPOP.showWeight(xiaohongName, xiaohongWeight);        // *******************************************************************************************        //xiaomin        String xiaominName = "xiaomin";        int xiaominAge = 18;        String xiaominEyeColor = "blue";        float xiaominWeight = 50.0f;        float xiaominHeight = 163.1f;        PersonPOP.showAge(xiaominName, xiaominAge);        System.out.println(xiaominHeight);        PersonPOP.showWeight(xiaominName, xiaominWeight);        PersonPOP.showEyeColor(xiaominName, xiaominEyeColor);        PersonPOP.walk(xiaominName);        xiaominAge = PersonPOP.growAge(xiaominAge, 3);        xiaominWeight = PersonPOP.growWeight(xiaominWeight, 10.0f);        xiaominHeight = PersonPOP.growHeight(xiaominHeight, 5.0f);        PersonPOP.showAge(xiaominName, xiaominAge);        System.out.println(xiaominHeight);        PersonPOP.showWeight(xiaominName, xiaominWeight);    }}

用面向過程來寫人類,主要寫法方式就是不使用任何的成員變數/執行個體屬性,類中所有方法全部都用static修飾。調用面向過程的人類時候,需要在類外設定很多變數來儲存屬性。調用物件導向的時候是把屬性綁定到對象上,所以不需要更多的類外資料,假設人類有100個屬性,需要操作10個人,面向過程需要在類外設定1000個變數,使用物件導向在類外只需要設定10個人類執行個體變數就可以了。就算有人說物件導向太複雜了,沒必要用物件導向,但那是寫起來複雜,一旦做為基礎類被調用起來,那是比調用面向過程的類爽多了。而且在寫人類的時候,物件導向也只是多了成員變數聲明和初始化設定,並沒有比面向過程的寫法難很多,只是思維不一樣。

 

如果是打死也不願意使用oop的人,那麼可以用此篇的面向過程思維來寫java,物件導向最最基本的一點是封裝(繼承和多態是可選的,封裝是必須的),oop是資料和方法的封裝,PersonPOP類完全沒有對人的屬性有任何封裝,所以不算是物件導向。沒有什麼是只有物件導向能搞定,面向過程搞不定了的任務。

使用100%面向過程的方式來寫java程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.