728x90 programming17 객체지향의 근본 조건 1. 상속(Inheritance) 대부분의 객체지향을 공부한 사람들은 상속을 하면 코드를 재활용할 수 있다는 것을 알고있다. 하지만 단순하게 상속을 코드를 재활용하는 데에만 사용한다면 좋은 코드를 작성할 수없다. 객체는 속성과 메서드를 가진다. 따라서 객체지향에서 상속은 부모 클래스의 속성과 메서드를 자식 클래스가 물려받은 것이다. 아리스토텔레스는 기존의 분류 계층에서 새로운 하위 계층이 생성될 경우, 이 하위계층의 특징은 기존 상위 계층의 특징을 기본적으로 소유함과 동시에 자신만의 특징을 추가할 수 있다고 정의했다. 따라서 어떤 분류에 속하는 다른 객체가 어떤 특징을 가지고 있다면 그 분류와 하위 분류에 속하는 다른 객체도 그 속성을 가지고 있을거란 추론이 가능하다. 상위에 위치한 분류 계층을 하위 분.. 2021. 3. 6. 객체지향의 기본 요소 5가지 1. 객체(Object) 현실에서의 객체는 사람이 인식할 수 있는 최소한의 의미를 가지며 세상에서 유일한 실체가 있는 사물이다. 즉, 객체는 사람이 인식할 수 있는 최소한의 의미를 갖고, 유일하고, 실존하는 사물이다. 객체지향 소프트웨어를 구현할 때는 속성과 기능이 필요하다. 객체는 이 두가지 요소를 모두 갖추었기에 객체지향 소프트웨어에서 최소한의 독립 단위로의 의미를 가진다. 따라서 객체지향에서의 객체는 데이터와 기능을 모두 갖춘 독립적으로 실행할 수 있는 최소한의 독립적인 단위이다. 이때 객체는 객체지향 소프트웨어에서 유일한 실체로 존재한다. 2. Class 객체는 구체적이고 클래스는 추상적이다 외연: 일정한 개념에 속하는 모든 객체들의 집합 종개념: 하나의 개념 속에 포함되 있는 여러 개의 개별개념.. 2021. 3. 5. 객체지향 정의와 목표의 전환 1. 기능 중심의 프로그래밍 개발을 하게 되면 고객과 개발자의 주요 관심사는 기능이 된다. 물론 기능 구현은 중요하지만 유연한 소프트웨어와 빌드 자동화 같은 개발환경 역시 중요한 요소이다. 하지만 많은 개발자들은 오직 구현에만 신경을 쓴다. 기능을 빠르게 구현하는것도 중요하지만 개발자라면 더 좋은 소프트웨어를 만들기 위한 관심을 갖고 적절한 노력을 추구해야 한다. 기능 중심 개발을 코드 품질 저하를 야기한다. 기능 중심적 코딩을 하게 되면 유지보수, 확장성 등을 고려하지 못하게 된다. 따라서 코드가 지저분해지고 품질이 하락한다. 기능중심 프로그래밍은 다음과 같은 부작용을 가지고 있다. 1. 코드의 중복 버그가 생겨 수정을 해야되면 중복된 코드를 모두 수정해야한다. 2. 코드 속성의 과도한 노출 캡슐화 등.. 2021. 3. 5. 명령형(Imperative) 프로그래밍과 선언형(Declarative)프로그래밍 명령형: 알고리즘을 명시하고 목표는 명시하지 않는다 선언형: 목표를 명식하고 알고리즘을 명시하지 않는다 즉, 명령형은 무엇을 어떻게 할것인지에 초점이 맞추어져있고 선언형을 무엇을 할것인지에 초점이 맞추어져있다. 실생활에서의 예를 들자면 집 앞에 있는 편의점을 간다는 가정을 해보자. 이때 "집 앞에 있는 편의 점을 갈께" 라고 말을 하는 것은 선언형 이고 "집 앞에 편의 점을 가기 위해서 집의 문을 어떻게 열고 앞에서 500미터를 쭉 앞으로 걸어 우회전을 해야한다"라고 말하는 것은 명령형이다. 즉, 명령형은 과정에 집중하고 선언형을 목적에 집중한다. 명령형 프로그래밍의 경우 알고리즘 문에 풀이가 이에 해당될 수 있다. dfs문제를 푼다면 dfs의 과정을 모두 코드로 작성해야한다. 선언형의 경우 SQL문이 .. 2021. 1. 22. 이전 1 2 3 4 5 다음 728x90