Java个人通讯录
目錄
1.1個人通訊率(一)
1.2 程序設計思路
1.3關鍵技術
1.3.1 面向對象的基本概念
1.3.2 類的定義
1.4個人通訊率(一)設計步驟
1.4.1定義類Contract
1.4.2定義類Family
1.4.3定義類Partner
1.1個人通訊錄(一)
????????設計簡單的個人通訊錄系統(一),用于存儲聯系人信息,實現對聯系人按照基本聯系人、家人、工作伙伴等進行分類存儲,具體要求如下:
????????(1)聯系人的基本信息包括姓名、性別、電子郵件及若干個聯系電話;
????????(2)家人除具有聯系人基本信息之外,還需要定義家庭地址及生日;
????????(3)工作伙伴除具有聯系人基本信息之外,還需要添加所在公司及職稱/職務信息。
1.2 程序設計思路
????????實體對象可以看作是具有內部屬性及功能的構件,通過封裝技術隱藏實體內部的信息及功能的實現細節。個人通訊錄(一)涉及3個基本類,分別是聯系人類、家人類及工作伙伴類。
????????聯系人類封裝聯系人的基本信息及輸出功能;家人類復用聯系人類并添加特有屬性,描述聯系人的家庭地址與生日;工作伙伴類也復用聯系人類,同時通過組合技術描述工作伙伴所在的公司及職稱/職務信息。
1.3關鍵技術
1.3.1 面向對象的基本概念
Java是面向對象的程序設計語言,其基本思想是通過對象、類、封裝、繼承、多態等基本概念進行程序設計,它是從現實世界中存在的客觀事物(即對象)出發構建軟件系統的。
對象:作為構成系統的基本單位,對象是由數據及其行為所構成的封裝體。對象包含3個基本要素,分別是對象標識、對象狀態和對象行為。每一個對象必須有一個名字,以區別于其他對象,這就是對象標識;狀態用來描述對象的某些特征;對象行為用來封裝對象所擁有的業務操作。
例如,聯系人Contract對象包含姓名、性別、電子郵件及聯系電話等基本狀態信息,同時還具有打印輸出的行為特征。
類:對同類對象進行抽象形成類,它為屬于該類的所有對象提供了統一的抽象描述,其內部包括狀態和行為兩個主要部分。類也可以被認為是一種自定義的數據類型,可以使用類定義變量,所有通過類定義的變量都是引用變量,它們將會引用到類的實例,即對象。
封裝:封裝是一種信息隱蔽技術,通過封裝將對象的狀態和行為結合成一個獨立的模塊,盡可能隱藏對象的內部細節(包括對象內部的私有狀態及行為的具體實現)。封裝的目的在于把對象的設計者與使用者分開,作為使用者不必了解對象內部的實現細節,只需要使用設計者提供的行為方法實現功能即可。
繼承:繼承表示類之間的層次關系。繼承關系使得子類對象可以共享父類對象的狀態和行為。繼承又可分為單繼承(一個子類僅擁有一個父類)和多繼承(一個子類可以擁有多個父類),Java語言支持類的單繼承,而C++允許多繼承。在程序設計過程中通過繼承性,一方面得到了類的層次等級結構;另一方面,通過類的繼承關系可以使公共的狀態和行為特性得到共享,提高了軟件的重用性
多態:多態性是指同名的行為方法可在不同的類中具有不同的實現。在子類繼承父類的同時,類的方法實現可以進行擴充或者修改,使子類的同名方法更適合子類對象。如父類圖形(Shape)的繪圖方法draw(),在其子類圓形(Circle)和正方形(Square)都具有同名的繪制方法draw(),但是繪制的內容和方式都是不同的。
1.3.2 類的定義
類是一個自定義的引用型數據類型,可以采用如下格式實現類的定義:
[public|abstract|final] class 類名{[初始化塊的定義;][成員變量的定義;][方法的定義;]}public、abstract、final稱為修飾符,分別用于定義類的訪問限、抽象類及最終類等屬性。方括號([ ])表示可選項。類名必須是合法的Java標識符。為了提高程序的可讀性,Java的類名通常由若干個有意義的單詞組成,每個單詞首字母大寫,其余字母全部小寫。
大括號({ })之間的內容稱為類體,主要包括3部分:初始個塊、成員變量的定義、方法的定義。類中各成員之間的定義順序沒有任何影響,各成員間可以互相調用。初始化塊用于對類對象進行初始化操作;成員量用于定義同類對象具有的狀態數據;方法則定義類的行為特征或功能實現。
關于類與對象和成員方法的知識可以參考下方文章:
Java學習筆記(十一):類與對象_她與劍意皆失的博客-CSDN博客目錄概念:提出需求:使用老知識解決:使用新知識解決:類和對象的區別和聯系:屬性/成員變量/字段:基本介紹:案例分析:注意事項和細節說明:如何創建對象?如何訪問屬性?基本語法類和對象的內存分配機制:Java 內存的結構分析Java 創建對象的流程簡單分析概念:對象:對象是類的一個實例,有狀態和行為。例如,一條狗是一個對象,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等。類:類是一個模板,它描述一類對象的行為和狀態。提出需求:https://blog.csdn.net/long_0901/article/details/120170776?spm=1001.2014.3001.5501
Java學習筆記(十二):成員方法_她與劍意皆失的博客-CSDN博客_java成員方法怎么寫基本介紹在某些情況下,我們要需要定義成員方法(簡稱方法)。比如人類:除了有一些屬性外( 年齡,姓名..),我們人類還有一 些行為比如:可以說話、跑步..,通過學習,還可以做算術題。這時就要用成員方法才能完成。現在要求對 Person 類完善。成員方法的定義public(訪問修飾符) 返回數據類型 方法名(形參列表..) {//方法體 語句;return 返回值;}解釋:(1) 形參列表:表示成員方法輸入eg:person(int n) , getSum(int...https://blog.csdn.net/long_0901/article/details/124282927?spm=1001.2014.3001.5501
1.4個人通訊錄(一)設計步驟
1.4.1定義類Contract
完成類的Contract的定義:
(1)包含姓名(name)、性別(gender)、電子郵件(email)、若干個聯系電話(phones)等實例變量。
(2)為每個實例變量生成getter方法及setter方法,其中姓名不能為空。
(3)為聯系人定義3個構造方法:默認構造方法、包含所有成員變量的構造方法、包含姓名及聯系電話的構造方法。
(4)定義display()方法,輸出成員變量的詳細信息。
import static java.lang.Character.getName;public class Contract {private String name;private String gender;private String email;private String[] phones;public String getName() {return name;}public void setName(String name) {if(name==null||name.equals(""))//姓名不能為空return;this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String[] getPhones() {return phones;}public void setPhones(String[] phones) {this.phones = phones;}public Contract(String name, String gender, String email, String[] phones) {super();setName(name);setGender(gender);setEmail(email);setPhones(phones);}public Contract() {}public Contract(String name,String[] phones) {this(name,"","",phones);}public void display() {System.out.println("姓名:" + getName() + "\t性別:" + getGender() + "\temail:" + getEmail());System.out.print("聯系電話:");for (int i = 0; i < phones.length; i++) {System.out.print(phones[i] + "\t");}System.out.println();}public static void main(String[] args){Contract c = new Contract("盧海龍",new String[]{"666666","888888","0376-10010"});c.display();} }1.4.2定義類Family
根據繼承關系定義家庭聯系人類Family:
(1)除了從父類Contract繼承的實夜變量之外,類Family還需要定義家庭地址(address)及生日(birthday)這兩個成員變量。
(2)為每個成員變量生成getter及seter方法。
(3)為類Family定義兩個構造方法,通過調用父類的構造方法實現對象的初始化。
(4)重寫父類的display()方法,實現子類對象的輸出。
package chap05;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class Family extends Contract{private Date birthday;private String address;public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Family(String name, String gender, String email, String[] phones, Date birthday, String address) {super(name, gender, email, phones);setAddress(address);setBirthday(birthday);}public Family() {super();}public Family(String name, String[] phones) {super(name, phones);}public void display(){super.display();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");System.out.println("出生日期:"+sdf.format(getBirthday())+"\t家庭地址:"+getAddress());}public static void main(String[] args){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try{Family f = new Family("盧海龍","男","3034337371@qq.com",new String[]{"123456","888888"},sdf.parse("2002-09-01"),"河南省信陽市");f.display();}catch (ParseException e){e.printStackTrace();}} }1.4.3定義類Partner
定義工作伙伴類Partner及其所在的公司類Company。
(1)實現公司類Companv的定義。
(2)通過繼承定義合作伙伴類Partner,添力其所在公司(company)及職稱/職務(title)成員變量。
(3)為每個成員變量生成getter及setter方去。
(4)為類Partner定義兩個構造方法,通過調用父類的構造方法實現對象的初始化。
(5)重寫父類的display()方法,實現子類對象的輸出。
package chap05;import java.text.ParseException; import java.text.SimpleDateFormat;public class Partner extends Contract{private String title;private Company company;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public Company getCompany() {return company;}public void setCompany(Company company) {this.company = company;}public Partner(String name, String gender, String email, String[] phones, String title, Company company) {super(name, gender, email, phones);setTitle(title);setCompany(company);}public Partner() {super();}public Partner(String name, String[] phones) {super(name, phones);}public void display(){super.display();System.out.println("職務:"+getTitle()+"\n工作單位:"+getCompany());}public static void main(String[] args){Partner p = new Partner("盧海龍","男","3034337371@qq.com",new String[]{"666666","888888"},"Java工程師",new Company("阿里巴巴","上海浦東新區","0376-10001","0376-10002"));p.display();} }總結
- 上一篇: cmd 调用JLink.exe 下载程序
- 下一篇: 让LwIP拥有PING其他设备的能力