ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 220221 소프트웨어 설계 : 객체지향
    OS Computer Science 2021. 2. 22. 19:18

    객체지향 프로그램 용어 정리

    -OPP(Object Oriented Programming)-

     

    0. 멤버(Member)

      - 객체 혹은 클래스의 변수나 메소드를 말한다. 이에 대한 설명은 아래에 나열한다.

     

    1. 객체(Object, 오브젝트)

      - 객체 지향 프로그래밍에서 가장 기본이 되는 부분으로, 데이터(실체)와 그 데이터에 관련되는 동작(절차, 방법, 기능)을 모두 포함한 개념이다. 예를 들어 기차역에서 승차권을 발매하는 경우, 실체인 '손님'과 동작인 '승차권 주문'은 하나의 객체이다. 실체인 '역무원'과 동작인 '승차권 발매'도 하나의 객체이다. 같은 성질(구조와 형태)을 가지는 객체는 등급으로 정의하고, 같은 등급에 속하는 객체는 그 등급의 3)인스턴스라고 한다.

     

    2. 클래스(Class)

      - 객체 내부의 데이터 구조와 그 조작을 정리하여 정의한 것으로 동일한 속성, 오퍼레이션, 관계 등을 가지고 있는 하나 이상의 유사한 객체들의 집합이다.

     

     

     

    3. 인스턴스(Instance)

      - 일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소. 객체 지향 프로그래밍(OOP)에서, 어떤 등급에 속하는 각 객체를 인스턴스라고 한다. 예를 들면 ‘목록(list)’이라는 등급을 정의하고 그 다음에 ‘본인 목록(my list)’이라는 객체를 생성(기억 장치 할당)하면 그 등급의 인스턴스가 생성된다. 또한 4)변수가 포함되어 있는 어떤 논리식의 변수에 구체적인 값을 대입하여 식을 만들면 원래 식의 인스턴스가 만들어진다. 이런 의미에서 인스턴스를 실현치라고 한다.

      -  인스턴스화 했다는 것은 new를 사용해 클래스를 복제하여 새로운 객체를 생성, 바로 사용이 가능하게 만들었다는 것을 의미한다. 

     

    4. 변수(Variable)

      - 값이 저장된 기억장소. 객체는 변수에 자신의 상태를 저장하며, 변수는 5)식별자로 명명된 데이터 항목이다.

     

    5. 식별자(Identifier)

      - 프로그래머가 프로그램에서 사용하는 자료의 항목, 즉 변수나 함수, 상수, 배열, 클래스, 6)메소드 등에 부여하는 이름을 말한다.

     

    6. 메소드(Method)

      - 행위가 정의된 것. 필요할 때 호출(실행)될 수 있도록 선언과 문장들을 하나의 이름으로 그룹화한 것으로, 클래스의 일부이다. 일반적으로 함수와 같은 의미로, 하나의 객체가 내부적으로 전달받은 메세지에 따른 알맞는 기능을 수행한다. 즉 메소드란 개체에 포함된 고유한 동작을 의미한다.

     

    7. 멤버함수(Member function)

      - 클래스 내에서 선언된 함수. 8)멤버변수들을 통제하기 위해 사용한다. public, protected, private와 같은 접근 지정자를 사용하며, 외부에서 멤버함수를 통해 멤버 변수에 접근하기 위해서는 public을, 내부에서만 사용하기 위해서는 private를 주로 사용한다. 동일 클래스 내에서 존재하는 멤버함수끼리는 서로 호출이 가능하다.

    public : 모든 패키지/ 클래스에서 접근 가능

    protected : 모든 패키지/크래스에 관계 없이 자손클래스만 접근 가능

    default : 같은 패키지 내에서만 접근 가능

    private : 같은 클래스 내에서만 접근 가능

     

    열거된 순서는 허용하는 수치가 가장 높은 순이다.

     

    8. 멤버변수(Member variable)

      - 클래스나 객체의 멤머로, 클래스 내에서 선언된 변수를 의미한다. 절차지향 프로그래밍(C언어 등)의 구조체에서 필드와 항목이라고 칭했던 것을 class에서 멤버 변수라고 칭한다.

    static : 객체로 접근해야 하는 것을 클래스로 접근할 수 있도록 설정해 주는 것

    final : 변결될 수 없는 클래스, 메소드, 변수 앞에 붙어서 상속이나 오버라이딩을 할 수 없도록 한다.

     

    9. 캡슐화(Encapsulation)

      - 객체의 자료와 행위를 하나로 묶고 실제 구현한 내용을 외부에 감추는 것. 이렇게 캡슐화된 객체의 행위는 외부에서 볼 때 실제가 아닌 추상적인 것이 되어 10)정보은닉이 되어진다.

     

    10. 정보은폐, 정보은닉(Information Hiding)

      - 객체가 캡슐화를 통해서 내부의 자료와 오퍼레이션의 구현 내용을 감추는 것. 즉 외부의 무분별한 접근을 막는 것이다. 따라서 클라이언트에게 구현 사항을 수믹기 때문에 클라이언트는 UI에 의존하게 된다.

     

    11. 상속(Inheritance)

      - 클래스가 다른 클래스에서 속성을 상속받아 고유의 속성을 추가하도록 하는 것이다. 12)슈퍼클래스로부터 13)서브클래스에 변수 및 메소드를 상속시켜주며, 서브클래스는 상속받은 것에 자신의 특성을 14)추가하거나 15)대치할 수도 있다. 이러한 성질은 소프트웨어의 재사용성을 증대시킨다.

     

    12. 슈퍼클래스(Super class)

      - 최상위 클래스. 자바에서는 Object 클래스가 최상위에 위치하며, 모든 클래스는 직간접적으로 Object 클래스를 상속받는다. 이 클래스의 코드는 여러번 재사용할 수 있다.

     

    13. 서브클래스(Sub class)

      - 슈퍼클래스로부터 상태와 변수 및 메소드를 상속받는 것 외에 자신의 특성 또한 추가할 수 있다.

     

    14. 오버로딩(Overloading)

      - 메소드 혹은 연산자 같은 프로그래밍 언어 구조에 추가적으로 의미를 부여하는 것이다. 자바에서는 메소드의 중복정의는 허용하지만 연산자의 중복 정의는 허용하지 않는다.

     

    15. 오버라이딩(Overriding)

      - 상속받은 메소드 정의를 서브 클래스의 목적에 따라 변경하는 것. 상위 클래스에서 정의하였던 메소드의 기능을 상속받은 하위 클래스가 그 기능을 변경하고자 할 때 사용한다. 오버로딩이 추가라면 오버라이딩은 변경이다.

     

    16. 다형성(Polymorphism)

      - 하나의 인터페이스를 통해 서로 다르게 구현된 것들을 숨길 수 있는 능력. 동일한 메세지라도 수신하는 것이 누구인가에 따라 각각 다른 기능을 수행하는 것을 말한다. 예를 들면 한 회사의 TV 제품은 그 회사가 생산한 어떤 리모콘으로도 조종이 가능한 것과 같다.

     

    17. 예약어(Reserved word)

      - 문장의 뜻을 전달해주는 의미와 용법이 정해져 있는 단어. 사용자가 변경 불가능하며, 정해진 의미, 정해진 용도에만 사용할 수 있다.

     

    18. 추상화(Abstraction)

      - 한 개체를 다른 모든 개체와 구별할 수 있는 본질적인 특징으로 구분하는 것으로, 불필요한 부분을생략하고 객체의 가장 중요한 것에만 중점을 두어 간략화 시킨 것이다. 추상 클래스는 온전한 클래스가 아니므로 객체를 생성할 수가 없다.

     

    19. 필드(Field)

      - 클래스에서 속성이 정의된 영역. 멤버변수와 비슷하다고 보면 이해하기 쉽다.

     

    20. 생성자(Constructor)

      - 클래스를 만들게 되면 클래스명과 동일한 원형의 메소드가 자동으로 생성되는데 이를 생성자라고 한다. 객체의 구조를 인식하게 하고 생성되는 객체의 멤버변수들을 초기화하는 데 목적을 둔다.

     

    출처:

    m.blog.naver.com/PostView.nhn?blogId=ikjaejeon&logNo=10178313285&proxyReferer=https:%2F%2Fwww.google.com%2F

     

    객체 지향 프로그래밍 용어 정리 [출처] 객체 지향 프로그래밍 용어 정리|작성자 엔세리우스

    이 글은 객체 지향 언어(C#, JAVA 등)에서 흔히 사용되는 용어를 정리하기 위해 작성하였다. 흔히들 ...

    blog.naver.com

     

    객체지향 분석 방법론

    Rumbaugh(럼바우) 방법

    • 가장 일반적으로 사용되는 방법
    • 분석 활동을 객체모델, 동적모델, 기능 모델로 나누어 수행하는 방법

    Booch(부치) 방법

    • 미시적, 거시적 개발 프로세스를 모두 사용하는 분석 방법
    • 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의

    Jacobson 방법

    • Use Case를 사용하여 분석

    Coad와 Yourdon 방법

    • E-R 다이어그램을 사용하여 객체의 행위를 모델링
    • 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의
    • 연산과 메시지 연결 정의 등의 과정으로 주로 관계를 분석

    Wirfs-Brock 방법

    • 분석과 설계간 구분 없음
    • 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행

    출처

    itwiki.kr/w/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5_%EB%B6%84%EC%84%9D_%EB%B0%A9%EB%B2%95%EB%A1%A0

     

    객체지향 분석 방법론 - IT위키

     

    itwiki.kr

     

    객체지향 설계 원칙

     

    객체지향 설계5대 원칙이라 부르는데 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)을 말하고 앞자를 따서 SOILD 원칙이라고 부른다.

    1. 단일 책임 원칙 (Single Responsiblity Principle)

    모든 클래스는 각각 하나의 책임만 가져야 한다. 클래스는 그 책임을 완전히 캡슐화해야 함을 말한다.

    • 사칙연산 함수를 가지고 있는 계산 클래스가 있다고 치자. 이 상태의 계산 클래스는 오직 사칙연산 기능만을 책임진다. 이 클래스를 수정한다고 한다면 그 이유는 사직연산 함수와 관련된 문제일 뿐이다.

    2. 개방-폐쇄 원칙 (Open Closed Principle)

    확장에는 열려있고 수정에는 닫혀있는. 기존의 코드를 변경하지 않으면서( Closed), 기능을 추가할 수 있도록(Open) 설계가 되어야 한다는 원칙을 말한다.

    • 캐릭터를 하나 생성한다고 할때, 각각의 캐릭터가 움직임이 다를 경우 움직임의 패턴 구현을 하위 클래스에 맡긴다면 캐릭터 클래스의 수정은 필요가없고(Closed) 움직임의 패턴만 재정의 하면 된다.(Open)

    3. 리스코프 치환 원칙 (Liskov Substitution Principle)

    자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다는 원칙이다. 즉 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 한다.

    자식클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야 LSP를 만족한다.

    4. 인터페이스 분리 원칙 (Interface Segregation Principle)

    한 클래스는 자신이 사용하지않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다 여러개의 구체적인 인터페이스가 낫다.

    5. 의존 역전 원칙 (Dependency Inversion Principle)

    의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라는 것이다. 한마디로 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺으라는 것이다.

     

    출처

    medium.com/@hckcksrl/solid-%EC%9B%90%EC%B9%99-182f04d0d2b

     

    SOLID 원칙

    객체지향 설계원칙

    medium.com


     

     

    1,2회 #2

    객체지향 프로그램에서 데이터를 추상화하는 단위는?

    1 메소드

    2 클래스
    3 상속성

    4 메시지

     

    1,2회 #3

    객체지향 기법에서 클래스들 사이의 '부분-전체(part-whole)' 관계 또는 '부분(is-a-part-of)'의 관계로 설명되는 연관성을 나타내는 용어는?

    1 일반화

    2 추상화

    3 캡슐화

    4 집단화

     

    1,2회 #4

    객체지향 분석 방법론 중 E-R 다이어그램을 사용하여 객체의 행위를 모델링하며, 객체 식별, 구조 식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성되는 것은?

    1 Coad와 Yourdon 방법

    2 Booch 방법
    3 Jacobson 방법
    4 Wirfs-Brocks 방법

     

    3회 #3

    럼바우 객체 지향 분석과 거리가 먼 것은?

    1 기능 모델링

    2 동적 모델링

    3 객체 모델링

    4 정적 모델링

     

    3회 #7

    객체지향에서 정보 은닉과 가장 밀접한 관계가 있는 것은?

    1 Encapsulation

    2 Class
    3 Method

    4 Instance

     

    3회 #13

    객체 지향 소프트웨어 공학에서 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것은?

    1 트랜잭션

    2 클래스
    3 시퀀스

    4 서브루틴

     

    3회 #17

    객체지향 설계 원칙 중, 서브타입(상속받은 하위 클래스)은 어디에서나 자신의 기반타입(상위클래스)으로 교체할 수 있어야 함을 의미하는 원칙은?

    1 ISP(Interface Segregation Principle)

    2 DIP(Dependency Inversion Principle)

    3 LSP(Liskov Substitution Principle)
    4 SRP(Single Responsibility Principle)

     

    4회 #2

    럼바우(Rumbaugh) 객체지향 분석 기법에서 동적 모델링에 활용되는 다이어그램은?

    1 객체 다이어그램(Object Diagram)
    2 패키지 다이어그램(Package Diagram)

    3 상태 다이어그램(State Diagram)

    4 자료 흐름도(Data Flow Diagram)

     

    4회 #4

    객체지향 기법의 캡슐화(Encapsulation)에 대한 설명으로 틀린 것은?

    1 인터페이스가 단순화 된다.
    2 소프트웨어 재사용성이 높아진다.
    3 변경 발생 시 오류의 파급효과가 적다.
    4 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받
    는 것을 의미한다.

     

    4회 #5

    다음 내용이 설명하는 객체지향 설계 원칙은?

    - 클라이언트는 자신이 사용하지 않는 메서드와 의존관계를 맺으면 안 된다.

    - 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 된다.

    1 인터페이스 분리 원칙

    2 단일 책임 원칙
    3 개방 폐쇄의 원칙
    4 리스코프 교체의 원칙

     

    4회 #10

    그래픽 표기법을 이용하여 소프트웨어 구성 요소를 모델링 하는 럼바우 분석 기법에 포함되지 않는 것은?

    1 객체 모델링

    2 기능 모델링
    3 동적 모델링

    4 블랙박스 분석 모델링

     

    댓글

Designed by Tistory.