본문 바로가기

Programming/SW Engineering , Architecture, etc.

What is Object Oriented Design/Artchitecture? 객체지향 디자인/설계란? java,c++,softwareArchitecture,designPattern

What is Object Oriented Design/Artchitecture? 객체지향 디자인/설계란? java,c++,softwareArchitecture,designPattern



원문 ( 여기 )
Origin ( Here )



What is Object Oriented Design? (OOD)  객체지향 디자인이란 무엇인가?



Object Oriented Design is the concept that forces programmers to plan out their code in order to have a better flowing program. The origins of object oriented design is debated, but the first languages that supported it included Simula and SmallTalk. The term did not become popular until Grady Booch wrote the first paper titled Object-Oriented Design, in 1982.


Object Oriented Design is defined as a programming language that has 5 conceptual tools to aid the programmer. These programs are often more readable than non-object oriented programs, and debugging becomes easier with locality.



객체지향 디자인은 프로그래머가 더 나은 흐름의 프로그램을 만들기 위해 계획을 세우도록 강제하는 컨셉이다. 객체지향 설계의 시작은 말이 많지만, 첫 언어는 Simula 와 SmallTalk 이다. 이 용어는 Grady Booch 가 객체지향디자인 책을 낼 때 까지 유명해지지 않았다.


객체지향 설계는 프로그래머를 돕기위한 5가지 컨셉 도구들을 갖고 있는 프로그래밍 언어로 정의 된다. 이런 프로그램들은 보통 비객체지향 프로그램보다 가독성이 좋고, 지역성이 있어서 디버깅을 하기가 쉬워진다.



Language Concepts  언어 컨셉

The 5 Basic Concepts of Object Oriented Design are the implementation level features that are built into the programming language. These features are often referred to by these common names:



5가지의 객체지향 디자인의 기본 컨셉은 구현단계의 특징으로, 프로그래밍 언어에 녹아있다. 이 특징들은 보통 아래와 같은 이름으로 불린다.



Encapsulation  캡슐화


A tight coupling or association of data structures with the methods or functions that act on the data. This is called a class, or object (an object is often the implementation of a class).



 데이터를 만지는 메소드나 함수와 자료구조의 강한 결합/응집이다. 이것은 클래스나 객체라고 불린다 (객체는 보통 클래스의 구현체이다)



Data Protection  데이터 보호


The ability to protect some components of the object from external entities. This is realized by language keywords to enable a variable to be declared as private or protected to the owning class.



외부의 개체로부터 객체의 컴포넌트들을 보호하는 것이다. 이건 자신의 클래스에서 해당 언어의 키워드로 private / protected 로 선언된 변수를 쓰면서 사용 가능하다.



Inheritance  상속


The ability for a class to extend or override functionality of another class. The so called child class has a whole section that is the parent class and then it has it's own set of functions and data.



이 특징은 다른 클래스의 기능을 확장/덮어쓸 수 있는 것이다. 자식 클래스라고 불리는 것은 부모 클래스의 모든 것을 물려받아서 사용 가능하면서, 또한 자기 자신의 기능과 데이터를 추가로 가질 수 있다.



Interface  인터페이스


A definition of functions or methods, and their signatures that are available for use to manipulate a given instance of an object.



객체의 인스턴스를 조작하기위한 함수, 메소드, 특징의 정의이다. (전체를 아우르는 껍데기)



Polymorphism  다형성


The ability to define different functions or classes as having the same name but taking different data types.



이 특징은 다른 함수나 클래스들이 같은 이름을 같지만 다른 데이터 타입을 가질 수 있도록 해준다.





Programming Concepts  프로그래밍 컨셉


There are several concepts that were derived from the new languages once they became popular. The new standards that came around pushed on three major things:



일단 유명해지고 나면, 새로운 언어로부터 몇몇 컨셉들이 나오는게 있다. 새로운 3가지의 주요한 스탠다드가 있다.



Re-usability  재사용성


The ability to reuse code for multiple applications. If a programmer has already written a power function, then it should be written that any program can make a call to that function and it should work exactly the same.



 여러 프로그램에서 코드 재사용을 위한 것이다. 만약 프로그래머가 이미 좋은 함수를 짰다면, 어떤 프로그램에서든 호출하고, 똑같이 동작해야 한다.



Privacy  보안


This is important for large programs and preventing loss of data.



큰 프로그램에서 중요하고, 데이터 손실을 막는다.



Documentation  문서화


The commenting of a program in mark up that will not be converted to machine code. This mark up can be as long as the programmer wants, and allows for comprehensive information to be passed on to new programmers. This is important for both the re-usability and the maintainability of programs.



주석 안의 코멘트는 기계어로 변환되지 않는다. 이 마크업은 프로그래머가 원하는한/허락하는한 다양한 정보를 새로운 프로그래머에게 전달할 것이다. 이것은 프로그램의 재사용성과 유지성에 중요하다.





Something else you might like...?






2018/12/26 - [Programming/Software Architecture] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍 (1)

2018/12/28 - [Programming/Software Architecture] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍 - (#9, Tell, Don't Ask)



2019/01/29 - [Programming/Programming Language] - 클린코딩/더 나은 코딩을 하는 10가지 방법, 10 Tips for clean code/ better code/ quality code.


2019/01/15 - [Programming/Java] - How to use RxTx libraries, error/bug. RxTx Serial 통신 라이브러리 사용 방법,에러,버그 / Java



2019/01/24 - [Algorithm/Leet Code] - LeetCode #242 ValidAnagram. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접

2019/01/23 - [Algorithm/Leet Code] - LeetCode #225 ImplementStackUsingQueue. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접

2019/01/22 - [Algorithm/Leet Code] - LeetCode #220 ContainsDuplicate3. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접

2019/01/21 - [Algorithm/Leet Code] - LeetCode #219 ContainsDuplicate2. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접



2019/01/12 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #60 sudoku. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/12 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #59 spiralNumbers. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/08 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #58 messageFromBinaryCode. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/07 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #57 fileNaming. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive



2019/01/28 - [Life/Health care] - Rogaine 로게인(Minoxidil, 미녹시딜, 마이녹실) usage/sideEffects/dosage 효능/부작용/사용법

2019/01/25 - [Life/Health care] - Maca 마카 usage/side effects/dosage 효능/부작용/성인,소아 용법(2)

2019/01/25 - [Life/Health care] - L-Arginine 아르기닌 usage/side effects/dosage 효능/부작용/성인,소아 용법(3)

2019/01/17 - [Life/Health care] - Zinc 아연 usage/side effects/dosage/fatigue/supplement/antioxidant/효능/부작용/성인,소아 용법/건강/피로회복/영양제/항산화