2009-08-10 77 views
0

這個問題似乎很簡單,答案也是如此。我是最近開始工作的開發人員。到目前爲止,我還沒有參加面向對象的本科和碩士課程。然而,我對OOP的概念並不滿意和自信。最近,我在尋找就業機會,我發現很多僱主都很想知道我對OOP概念有多麼自信。OOP概念的重要性?他們是否充分使用了?

我對OOP概念有很強的理論知識。雖然這個理論知識幫助我清除訪談和找工作,但是當談到實施時,我變得愚蠢。如果你問我什麼是反思,那麼你會從我這裏得到一個完美的答案,但如果有人問我爲什麼,我們在哪裏使用它,那麼我會感到失望。

現在我真的很想知道當我沒有機會在我的項目中實現全部或大部分面向對象概念時該怎麼做。我也非常喜歡所有最新的開發工具和編程環境,許多程序員都喜歡使用已經構建好的組件,框架和庫,這可能會給優秀的架構師帶來空虛。

我想成爲一名成功的建築師,爲此,我認爲我必須在這方面非常強大。

然後我想到了學習NHibernate,你將完全處理對象。

現在我需要的是幾個有價值的提示,可以幫助我掌握所有或大部分OOP概念。

回答

2

聽起來就像你錯過了真正的編程經驗。沒有什麼會取代。

去工作,鍛鍊,閱讀,向你更有經驗的同事學習。最終你會得到它。

至於非常先進的工具,你是正確的。他們生產的代碼猴數量不斷增加。如果你現在看到它,那麼你的開局不錯。只要保持路徑。優秀的建築師將永遠需要和重視。

0

有趣的問題。在某種程度上,我已經與Object編程一起成長,隨着各種框架的發展,我已經發展起來了,我從未想過如何來到一個已經存在這麼多複雜框架的景觀。他們的存在往往會抑制這種程度的摸索和磕磕絆絆,並且一般會導致錯誤,導致更深入的理解。

雖然我認爲嚴肅的發展仍然是一個很好的設計問題,但這並不僅僅是填補空白,嘿國際奧委會framwork告訴我該怎麼做,編程。

您可以通過研究您使用的框架的「如何」來增強您的理論知識。但我想你需要的是實踐經驗,不能評論你工作場所對你的開放性,但如果你不能在那裏得到它,你可能需要做一些「業餘愛好者」或開源開發。

我會建議的一件事是嘗試參與設計討論,嘗試讓有經驗的開發人員審查您的設計。如果運氣好的話,他們甚至會說:「嘿,你爲什麼沒有在那裏使用反射......」

1

你想開始尋找設計模式。瞭解使用OOP的時間,方式和原因比知道OOP本身更有價值。

框架是偉大的,我不會錯誤的人使用它們。但是,這個領域還有很多偉大的建築師的空間。利用程序員知道如何使用它們的差距,但不知道爲什麼或何時。框架很快成爲尋找許多開發人員釘子的錘子。開源是你的朋友 - 深入瞭解源代碼並從內到外學習它們,以便你真正理解正在做什麼和爲什麼。

1

根據我的經驗,您將從學校學習發展的「概念性」一面,從實際體驗學習「應用程序」一面。沒有工作的替代工作;不管我接受多少學校教育,它都不會像我學到的那樣從事真正的工作。這就是爲什麼如果你能夠在大學實習,也是一個好主意。

至於OOP本身的價值,我發現它在大型項目和團隊項目中最有用。整個觀點是將解決方案分解成可行的「概念性」元素,這使得團隊成員之間的交流更加容易,並且使解決方案可視化。可視化是面向對象的另一個大的專業人員。

有一點需要注意的是OOP恕我直言,就是入門級開發人員傾向於過度使用大量的OOP概念。並非所有事情都需要繼承。設計模式是非常有用的,但也不應該被過度應用。看看你的問題,首先嚐試自己想一個解決方案,然後將其與已知模式進行比較,看看它們是否提供了更好的答案。簡單不能被高估。另外,使用UML編輯器和Mind Mappers等工具(如XMind)有助於進入正確的思維框架。

檢查並看看你周圍是否有編程組;我覺得這是一個很好的方式來認識可以和編程進行交流的人,而OOP的另一個優點是與編程思想交流更容易。

-1

重要的是「思考」,在OOP中需要改變思考 而在oop環境中進行編程/開發或使用OOP 範例。

我自己面對過很多次這個問題:爲什麼要使用OOPL或者 當我可以在程序中開發軟件時使用面向對象編程語言 編程語言?爲什麼要使用面向對象方法?它有什麼好處 什麼其他非OOP不?

我從許多來源看(許多書籍和文章的主題來命名!) 跟蹤的真正原因,打的基本基本思想或原則 其在那裏作爲軟件工程的一個範例。我認爲我發現 很簡單,這就是爲什麼我建議改變思維。

如果我們環顧四周,我們會看到圍繞着我們的事物以及我們直接或間接與 互動的事物。我們用姓名來識別他們,我們給他們。 不管事物是什麼,它們或者存在於真實平面或者概念平面 中,並且我們「知道」它們「識別」它們並與它們相互作用。而重要的是我們 '名字'他們。這個命名非常重要,因爲我們需要'姓名'來了解這種互動的「事物」和 。

今天吃了什麼?巧克力和咖啡。所以你已經與 巧克力和咖啡「互動」。現在巧克力和咖啡都是我們擁有的食物(人類) 已經給出了名字,並且我們認出了這些名字。而且,我們在我們的 瞭解我們與他們的互動 - 可以說保持我們的 與巧克力和咖啡的互動記錄,知道他們的名字與 交互。

交互是我在這裏使用的一個通用術語。其實在我們的例子中,在 的例子中,你已經執行了一個「行動」 - 吃東西。通過「吃」行動,你已經與巧克力和咖啡相互作用。現在想想這種方式,通過互動中的行動,咖啡是現實世界中的實體。 你可能會說'流程'。

Alice註冊了什麼課程?計算機科學。 計算機科學在世界上並不存在真正的存在,因爲存在一個人 或存在樹木或房子,或咖啡杯或其他'有形的東西'。它 是一個主題,'概念的東西'。計算機科學的研究有一些需要研究(或通過我們的智力 教師/過程進行交互)的'主題',例如離散數學,算法設計和分析,數據結構等。它們一起被命名爲學習主題'計算機 科學'。現在愛麗絲'學習'(互動)計算機科學。這裏發生了什麼 ?好的,如果我們現在想這樣說,並說愛麗絲是一件東西,對象。 計算機科學是一件東西,對象

咖啡是對象。巧克力是對象。你再次是對象。我們發現 即對象對象相互作用。太棒了!有人可能會驚歎!這就是 真實世界的場景!其實它是通過 抽象達成的概括。

這只不過是 - 在表面水平至少 - 命名與 的含義。或者你可以說'有意義的命名'。這是一個過程。這是非常自然的 ,對我們來說很明顯,我們只是忽略它。

在OOP中,我們只需要將自己帶入這種思維過程,知道並提醒自己「對象與對象互動」。哦! 只有這個想法。你必須記住,一個對象 可能會與自己交互!想想你,當你想到 時,你在做什麼?是啊!還有一件非常重要的事情我會在適當的時候來到 。雖然我認爲這很明顯。但在適當的時候。好。我們 真的用電腦嗎?其實我們解決問題。特別是那些我們試圖在我們的腦海中解決的問題。從廣義上說,我們是 模擬機器中的心理過程,這是我們設計的。記住AI是 在現實中仍然是一件遙遠的事情,並且存在哲學上的辯論和科學,關於計算機是否可以變得聰明。另一種方式是把它放在計算機上是否真的可以模擬真實的心智過程。但那不是我們要去的地方。別管它!

如果我們想通過我們 想在代表現實生活中possible.There 儘可能接近去計算設備來解決現實生活中的問題進來OOP「現實生活中的造型」一詞。可以看出,在解決 現實生活中遇到的問題,無論是發射航天飛機,還是保留客戶和產品銷售信息進行處理,我們都做抽象,做了 計算,這是另一種形式的抽象過程,反過來我們處理與我們的思想精神上的對象 。因此,我們在抽象中表示真實的生活對象(概念 數字等對象),並使用抽象 過程處理它們,如數學中那樣。在計算機中,我們也希望代表對象,並且還希望以對象的形式表示進程。所以這裏 是面向對象,可以說是軟件工程。現在來到 這是'適時'來處理面向對象的另一個方面。

回到我們的例子,你吃了什麼?吃是一種行動,一種形式的互動。可以認爲這是一個過程,它可以被認爲是一個對象,就像一個進程在Non-OOPL中被認爲是'函數'或'例程'或'過程'一樣。在OOP中,我們可以表示(抽象) 飲食作爲一個過程體現爲一個對象。同樣的學習是一個對象。在 中,思考「事物」和「過程」的思路都被認爲是對象 ,並在計算機內存的虛擬平面中表示。因此, Alice-an Object-Studies-an object-Computer Science-an Object is based on OOP saying,據我們的論點。

我們可以在這裏寫一段代碼嗎?咱們試試吧。

class Alice { 
    private String name; 
    private String address; 
    private String stdID; 
    private Course courseOfStudy; 
    ... other codes... 
    public void studies(Course sub) { 
     courseOfStudy=sub; 
    } 
    ... 
    public Course getStudyCourse() { 
     return courseOfStudy; 
    } 
} 
class Course { 
    codes.... 
} 

這種方法在OOP(這裏是Java代碼)中可以寫代碼。我給了一個簡單的編碼 。人們可以想出更好的編碼和設計方法,這取決於要編寫的軟件。在OOP設計中很重要的是 。所以我認爲在開始時應該提到 。這很重要!當談到OOPL 或OOAD時,我更喜歡這樣,「一切都是對象」。

那麼這就是我想說的。你可能會也可能不會喜歡它,但評論和 說出你的想法。

+2

你打我「GIANT WALL OF TEXT」!這不是很有效......我打了「Downvote」!這是超級有效! – Puppy 2014-09-09 21:48:50