오늘 TIL 3줄 요약
1. 적당히 공부하자!
2. 소규모 계획하고 점점 추가해가자!
3. 프로그래밍은 완성하고 싶은 프로그램에 따라 다르다.
TIL 날짜
2023.11.20
오늘 읽은 범위
에피소드 36: 객체 지향 프로그래밍은 뭐죠? ①
에피소드 37: 객체 지향 프로그래밍은 뭐죠? ②
에피소드 38: 함수형 프로그래밍이 뭐죠?
책에서 기억하고 싶은 내용 [기초적인 내용]
프로그래밍 패러다임
의미: 프로그래머가 프로그래밍을 할 떄의 관점, 방식 및 사고의 틀
종류: 객체 지향 프로그래밍, 명령형 프로그래밍, 함수형 프로그래밍, 절차지향 프로그래밍
특징
- 프로그램은 순차, 분기, 반복, 참조로 구성되어야 한다.
- 프로그램 개발을 위하여 전략을 세워 사용하고자 하는 언어 (프로그래밍 언어) 를 정해야 한다.
객체 지향 프로그래밍
의미: 최소 단위가 객체이며, 객체를 만들고, 이 객체를 사용하여 데이터와 메소드를 묶고 소통하는 프로그래밍 방식이다.
언어: Java, C++, C#, Python, Ruby, Swift
개념
- Class
- 객체의 선언을 인스턴스 [메모리에 할당된 객체] 라고 한다.
- 객체의 상태를 나타내는 필드(field)와 행동인 메소드(method)로 구성된다.
- 예시
class Person {
// constructor는 이름을 변경할 수 없어요.
constructor(name, age) {
// 이름(name)과 나이(age)가 없으면 사람이 아니죠?
// new라는 키워드를 이용해서 인스턴스를 만들 때, 기본적으로
// 넣어야 하는 값들을 의미해요! :)
// 여기서 말하는 this는 만들어질 인스턴스를 의미한다고 생각해주세요!
this.name = name;
this.age = age;
}
sayHello() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
}
const person1 = new Person("Alice", 30);
const person2 = new Person("Bob", 25);
// 만든 객체를 토대로 메서드 호출해보기
person1.sayHello(); // 출력: "Hello, my name is Alice and I am 30 years old."
person2.sayHello(); // 출력: "Hello, my name is Bob and I am 25 years old."
- 상속
- Class는 상속을 통해 다른 Class에 물려줄수 있다.
- 상속 하는 Class를 superclass 또는 base class
- 상속 받은 Class는 subclass 또는 derived class
- 예시
class Animal {
// 이름을 필수로 받아야 해요
constructor(name) {
this.name = name;
}
// 동물의 행동을 정의하는 메소드
speak() {
console.log(`${this.name} makes a noise.`);
}
}
// 동물 클래스를 상속받는 Dog 클래스를 만들어요
class Dog extends Animal {
// 상속받을 때, speak()를 입맛에 맞게 재정의해요.
speak() {
console.log(`${this.name} barks.`);
}
}
// Dog를 만들 때는 Animal의 상속을 받은 class이기 때문에 이름을 필수로 받아야 해요!
let d = new Dog('Mitzie');
// 출력 결과
d.speak(); // "Mitzie barks."
장점
- 직관적이며, 유지보수가 쉽다.
- 재활용성이 높다.
단점
- 객체에 대한 이해도가 높아야 한다.
- 실행속도가 느리다.
- 코딩의 난이도가 높다.
선언형 프로그래밍
선언: 원하는 결과값
대사 방식: BLT 샌드위치를 만들어줘
예시
//원하는 음식 만들어주기
function Making(food){
return `${food}를 만들어줘`
}
명령형 프로그래밍
선언: 원하는 결과값에 어떻게 도달하는지 선언
대사 방식
- 토스트 빵을 구워라
- 양상추 2~3장 씻고, 토마토 얇게 썰어서 2조각 준비하고, 구운 베이컨 3개를 준비하라.
- 1의 토스트 빵 1개 위에 2의 재료를 쌓은 다음, 나머지 토스트 빵을 1개로 덮어라.]
예시
// 재료들을 넣는다.
let ingredient = {
bread: Brioche
vegetable: tamoto,
beef: bacon,
}
function Making(food, ...ingredient){
//구조분해 할당을 하여 재료넣기
let {vegetable, beef , bread} = ingredient
let recipe = []
//안에 있는 순서 만큼 넣어주기
recipe.push(...ingredient)
// 빵이 존재할 경우 한번더 추가하기
if(bread){
recipe.push(bread)
}
food = recipe
return food //[Brioche, tamoto, bacon, Brioche]
}
개발자의 번아웃 예방 과정
1. 휴식 시간을 가져라.
2. 일하는 시간을 제한하라.
3. 몸을 움직이고 건강한 음식으로 활력을 찾아라.