發表文章

目前顯示的是有「物件導向程式設計」標籤的文章

C#定義一個Call API並返回Stream的共用方法_參數支援傳入不同物件的彈性設計(依賴倒轉原則DIP)

圖片
  在很久以前有寫過有關SOLID的文章 設計模式特訓_Day01_SOLID五項鐵則 https://coolmandiary.blogspot.com/2017/05/day01solid.html 如今在專案偕同過程也遇到實踐機會 假設我今天有一個method想要傳入固定要做 json反序列化成其對應物件的Model Class 這種Model Class可能在專案裡面有一或多個 IC_KeyWord_Model 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; /// <summary> /// IC_KeyWord_Model 的摘要描述 /// </summary> public class IC_KeyWord_Model { [JsonProperty(PropertyName = "keyword")] public string keyword { get ; set ; } [JsonProperty(PropertyName = "similar words")] public string [] similarwords { get ; set ; } [JsonProperty(PropertyName = "additional words")] public string [] additionalwords { get ; set ; } } IC_RcmdAssg_Model 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 using Newtonsoft.Json; using System...

JAVA_介面(Interface)_上

圖片
介面一詞到底要如何去瞭解 事實上於日常生活中我們有很多 具體東西 已經知道可以用 Class的觀念 去看待 但是有些事務實際實作上各自都不同 是比較不能很具體、明確地去實作出一套流程、如何具體實作等等!!!! 也因此介面 很抽象 更不能實體化 預設的存取修飾為public 、 abstract 此時就會透過"介面" 來去定義 介面和抽象類別有點像 只定義方法但 不實作 差別在於抽象類別中也可能包含實作過的方法成員 還有介面中不可定義任一屬性,除非是一種常數(不可更改)。 需要用final去修飾 介面是 被類別實作 介面 可被介面繼承、 可去多重繼承(繼承多個父類別) 且凡是 定義於介面中所有方法成員都是抽象的  因此也不用特定用abstract做修飾描述 有去實作(implements) interface的物件必須要去實作其中所定義的方法 介面 事實上就是 一套規格標準的定義 JAVA中 interface中的方法存取權限都會是public公開的 主要就是要利於其他類去實作 所以可以省略abstract 和 public 修飾 介面定義 interface InterfaceName { [ public ][ static ][ final ] varProperty ; [ public ][ abstract ] method: } 介面實作語法如下 class ClassName implements InterfaceName , InterfaceName2,.... { ... } 可將其裡解為 使用 介面 InterfaceName 來打造 類別 ClassName 介面  可以解釋為 一種身分資格(抽象概念) 介面實作則可想成  想獲取就必須去付出一些證照考取的準備過程 那每個人都有各自不同的準備方法 舉例而言 我想成為某一領域的專家(JAVA 專家 或是 Linux 專家) 就需要去考過某張認證 有人是去透過做考古題、有人是透過做中學 每個人 去實作的方式皆各有不同 有人只想獲取一個資格 有人則想同時獲取兩個資格 /* * To change ...

JAVA物件導向_封裝_繼承_抽象類別_多型的概念

圖片
在物件導向程式設計當中 會探討到所謂  「多形」的概念 那一般會和抽象類別一起探討 其實每一天的任務做的事情就牽扯到這些物件導向設計的觀念 可以用下面的例子來做簡易示範 前人工程師們很辛苦的設計出如下架構 今天若我們想要去滿足使用者輸入特定關鍵字來對應計算出不同形狀的面積 此時我們可以怎麼去做開發前的規劃呢??? 假設user可能會輸入  三角形、正方形、圓形等等的時候 各有各自不同面積計算的公式和對應傳入的參數 所有的形狀都有 計算面積的機制!!!!!!!! 藉此我們創建一個抽象類別命名為 Shape 抽象類別包含以下幾個特徵: 1.無法定義明確細部動作的類別 2.無法產生物件實體 3.包含抽象方法(不具實作細節的方法)的類別 4.以其作為父類繼承的子類必須實作其抽象方法 由下方的UML 進行程式規格設計撰寫 使用staruml 繪製 Shape 抽象類別 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package shape; //無法定義明確細部動作的類別,所以也無法產生物件實體 //包含抽象方法的類別 /** * * @author chous */ public abstract class Shape { protected double area; public abstract void calcArea (); public double getArea (){ return area; } public void printA...

物件導向程式設計考古題_文檔複製(處理)_四種程式語言實作方法_c有辦法實作物件導向嗎?

圖片
一個非選題題組(共分三小題) 請寫一文字檔案 copy 函式( method or function ), textFileCopy() ,滿足以下需求: ( 可以使用任何熟悉的程式語言 )(25 分) (一)輸入及輸出檔名 以 String 的參數(parameter)傳入 。 (二)以產生 Stream 或 Reader/Writer 的物件開檔,若開檔不成功, throw FileNotFoundException 給呼叫者(caller)。 (三)使用 try-catch 來處理讀寫(read/write)的動作,若讀寫不成功, catch IOException , 關閉輸入及輸出檔案,並 throws IOException 給呼叫者。 這裡我就用 C語言 以及 C++ 、  C# 、 Java 這三門OO程式語言 做題目練習 這裡假定我們在此目錄下有一份  txt檔案 內容存有 I have an apple for lunch. 3/14 (有空白、數字、斜線及英文字母) 路徑為 : C:\TEMP 檔案名 : word.txt ======================================================================= C 版本. IDE  使用  Codeblocks 在複製一個檔案之前  我們要先知道 如何開啟(讀取)一個檔案 文件的複製  其實乍看之下是一個對一個檔案點選之後 右鍵 ---> 複製  之後再貼上 這是牽扯到兩個操作細節流程的 Step1.先讀取 Step2.再寫入 Step1. 檔案讀取 執行後顯示 所以只會打印出  第一個字元  'I'  之後就結束了 電腦判定已經到文件的結尾 第一版. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ///C語言第一版 #include <stdio.h...