본문 바로가기
카테고리 없음

IT 잡학사전 TIL (9장)

by seungbeom35 2023. 11. 20.

오늘 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}를 만들어줘`
}

 

명령형 프로그래밍

선언: 원하는 결과값에 어떻게 도달하는지 선언

대사 방식

  1. 토스트 빵을 구워라
  2. 양상추 2~3장 씻고, 토마토 얇게 썰어서 2조각 준비하고, 구운 베이컨 3개를 준비하라.
  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. 몸을 움직이고 건강한 음식으로 활력을 찾아라.