카테고리 없음

202208026이종윤 c프로그래밍 6주차과제

jong133 2024. 10. 8. 13:47

객체지향언어를 많이 사용하는 언어순으로 뤼튼한테 질문을 해보았다.
객체 지향 프로그래밍의 중요성

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

구조적 프로그래밍의 문제점

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

객체기반으로 프로그래밍하는 페러다임인데, 변수는 data propertes,함수는 method,객체지향 프로그래밍

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

 c++은 객체지향언어보다 멀티패러다임 언어이다. c++를 oop적으로 프로그래밍하면 저 4가지를 알아야된다. 

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

기존에 구조적 프로그래밍은 따로 분리되어있다면 객체지향 프로그래밍은 자료가 서로 묶음으로 처리가 되어있다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

클래스를 실제로 사용되는 언어로 찍어대는것이 인스턴스이다.클래스는 설계도고 실질적으로 찍어낸 객체를 인스턴스라고한다.

클래스는 객체 타입이다. 쉽게말하면 클래스는 설계도고 객체는 그안에 집을 말하는것이다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

클래스(자동차)의 인스턴스는 내친구의 벤츠(객체)이다.

고양이(클래스)의 객체는 우리집에 사는 야옹이라는 고양이다.

즉 개체는 추상적으로 오면 안된다. 붕어빵틀을찍었을때 구체적으로 나오는것처럼 객체는 구체적이여야된다.

객체는 유일하게 값을 대입할수있는 얘들을 객체라고한다. 

클래스는 캡슐화시키는도구인데, 그안에는 자료와 함수가 같이 들어가있다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

c++에서는 상속이 기본클래스 파생클래스라 불리지만 부모클래스라고부른다. 그리고 상속받은 클래스를 자식클래스라고한다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

다형성(polymorphism)은 이름을 하나만 쓴다.

클래스다이어그램 중요

젤위 클래스이름:자동차

중간 자동차를 특정지을수있는변수:문,핸들,바퀴,의자

마지막 자동차가하는 행위들:감속한다,움직인다,정차한다

이게 약속 클래스다이어그램이다. 그냥 변수라안하고 멤버변수,멤버함수라고한다.

클래스이름:고양이

중간 고양이를 특정지을수있는변수:고양이털색깔,품종,나이,이름,사는곳

고양이가가질수있는변수:먹다,사냥하다,1년후에 한살먹는다,짖다

객체지향 용어 비교표

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

감출때는 프라이빗밑에다가 두고 공개는 퍼블릭아래에다가 둔다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

약식 다이어그램 클래스를 실습해보았다.
class에서는 아무것도안쓰면 private이 숨겨져있는데 struct구조체에서는 public이 기본이다.
c++클래스안에는 변수뿐만아니라 이렇게 함수를 넣을수있다. 매개변수가 아닌것은 반드시 void를 입력해야된다.

c++,c#,java script, java,python언어들의 클래스로부터 객체를 만드는 예제를 직상히고 설명해줘

 

답변

빠른 검색

각 프로그래밍 언어에서 클래스로부터 객체를 만드는 예제를 설명하겠습니다. 각 언어별로 간단한 Car 클래스를 정의하고 객체를 생성하는 예제를 보여드리겠습니다.

1. C++

cpp

#include <iostream>
using namespace std;

class Car {
public:
    string brand;
    int year;

    Car(string b, int y) {
        brand = b;
        year = y;
    }

    void display() {
        cout << "Brand: " << brand << ", Year: " << year << endl;
    }
};

int main() {
    Car myCar("Toyota", 2020);
    myCar.display();
    return 0;
}

설명:

  • Car 클래스는 brand와 year라는 두 개의 속성을 가집니다.
  • 생성자를 통해 객체가 생성될 때 이 속성들이 초기화됩니다.
  • display 메서드는 차의 정보를 출력합니다.

2. C#

csharp

using System;

class Car {
    public string Brand { get; set; }
    public int Year { get; set; }

    public Car(string brand, int year) {
        Brand = brand;
        Year = year;
    }

    public void Display() {
        Console.WriteLine($"Brand: {Brand}, Year: {Year}");
    }
}

class Program {
    static void Main() {
        Car myCar = new Car("Toyota", 2020);
        myCar.Display();
    }
}

설명:

  • Car 클래스는 속성으로 Brand와 Year를 가지고 있습니다.
  • 생성자를 통해 속성들이 초기화되며, Display 메서드로 정보를 출력합니다.

3. JavaScript

javascript

class Car {
    constructor(brand, year) {
        this.brand = brand;
        this.year = year;
    }

    display() {
        console.log(`Brand: ${this.brand}, Year: ${this.year}`);
    }
}

const myCar = new Car("Toyota", 2020);
myCar.display();

설명:

  • Car 클래스는 생성자와 메서드를 가지고 있습니다.
  • new 키워드를 사용해 객체를 생성하고, display 메서드로 정보를 출력합니다.

4. Java

java

class Car {
    String brand;
    int year;

    Car(String b, int y) {
        brand = b;
        year = y;
    }

    void display() {
        System.out.println("Brand: " + brand + ", Year: " + year);
    }
}

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car("Toyota", 2020);
        myCar.display();
    }
}

설명:

  • Car 클래스는 brand와 year 속성을 가지고 있습니다.
  • 생성자를 통해 초기화 후, display 메서드로 정보를 출력합니다.

5. Python

python

class Car:
    def __init__(self, brand, year):
        self.brand = brand
        self.year = year

    def display(self):
        print(f"Brand: {self.brand}, Year: {self.year}")

my_car = Car("Toyota", 2020)
my_car.display()

설명:

  • Car 클래스는 생성자 __init__을 사용하여 속성을 초기화합니다.
  • display 메서드로 정보를 출력합니다.

각 언어의 문법은 다르지만, 클래스와 객체 생성의 기본 개념은 유사합니다. 이러한 예제를 통해 클래스의 생성과 메서드 호출 방식을 이해할 수 있습니다.

출처:뤼튼

c언어의 구조체에서는 멤버변수만 넣을수있다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

c언어의 구조체에서는 변수만 넣을수있었는데 c++클래스로 넘어가면서는 함수도 넣을수있다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

c언어에서는 변수만 넣고관리하기에 좋았지만 c++로 넘어오면서 함수까지 관리를 할수있어서 훨씬더 좋아졌다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

c언어와 c++언어의 구조체가 다르고 접근속성을 생각하면 클래스는 private이 기본이고 struct에서는 public이 기본이다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

c언어에서는 빈드시 struct man형으로 써야되고 c++에서는 그냥 man형을 써도된다. 즉 생략해도된다.
이렇게 cpp에서는 struct를 생략해도 된다.

구조체에 같은연산을 대입하면 멤버들이 다 복사가 된다.

출처:https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

 

Smile Han

 

www.youtube.com

아무래도 함수까지 포함된 클래스를 더많이 사용한다.