2013-03-25 14 views
9

Mam zamiar opracować aplikację w C. Moje doświadczenie programistyczne zawsze było z językami zorientowanymi obiektowo. Stąd zawsze myślę pod względem klas, interfejsów, dziedziczenia, polimorfizmu itp. Podczas projektowania aplikacji.Strukturyzacja aplikacji C?

Wszystkie książki "C", które obejrzałem, zajmują się programowaniem w języku C lub koncentrują się na konkretnym temacie, nie mogłem znaleźć żadnej informacji o architekturze aplikacji w C. Jak więc utworzyć strukturę aplikacji C? funkcje OOP nie są dostępne? Jak zachować wszystko, co modularne i dobrze zorganizowane, i unikać powielania kodu (nie wydaje się, aby OOP było dużo duplikacji kodu)?

Edytuj: Nie szukam odpowiedzi na temat "jak napisać kod OOP w C". Szukam standardowego sposobu konstruowania aplikacji C, aby były modułowe i dobrze zorganizowane. Jeśli standardową praktyką jest hakowanie na niektórych obiektach OOP, to jest to wystarczająco dobre, ale jeśli nie, nie ma sensu mówienie mi, żebym zszedł tą drogą.

+6

http://stackoverflow.com/questions/351733/can-you-write-object-oriented-code-in-c – NPE

+0

Nie ma "1 microsoftowej drogi" –

+0

@Aniket There's in Redmond, WA, 98052, USA. Ale jak to jest istotne? –

Odpowiedz

1

Możliwe jest ćwiczenie TDD z C, patrz C programming and TDD.

Jeśli jesteś przyzwyczajony do ćwiczenia TDD, wiesz, że pomoże ci to dobrze zorganizować kod i moduł.

4

możesz zaprojektować swój projekt C jako projekt obiektu zorientowanego, a następnie zastąpić klasę według struktury. Ten polecił mi w tym topic iw tym topic

+0

Czy jest to jednak standardowa praktyka pisania aplikacji C? Nie chcę wykonywać niektórych hacków, aby móc "używać obiektów w C". Chcę tworzyć aplikacje C w standardowym stylu najlepszych praktyk. Czy polecasz standardowy sposób robienia rzeczy w C? – csss

+0

@csss Chociaż nie ma standardowych zalecanych procedur w programowaniu w C, sztuka rozwijała się w czasie. Książka, o której wspomniałem "Interfejsy i implementacje C", uczy, jak to zrobić. –

+0

powyższy link, a nawet ten link http://stackoverflow.com/questions/351733/can-you-write-object-oriented-code-in-c proponuje metodę zaprojektowania aplikacji, która jest bliska zorientowanemu projektowi projektu to nie jest hack. w przeciwnym razie można użyć C++ zamiast: – MOHAMED

2

Ponadto, aby utworzyć wielokrotnego użytku oprogramowanie C, przeczytaj tę książkę Davida R. Hanson

https://sites.google.com/site/cinterfacesimplementations/

Podstawowe OOP jest najlepiej zrobić z Techniki wymienione w książce Alexa Schrinera OOC.pdf

+0

Nie przeczytałem książki, ale przyjrzałem się przykładom. Generalnie wygląda dobrze, ale myślę, że używanie definiowania do typu zastępczego jest nieco wątpliwym paradygmatem. –

6

To jest inny sposób myślenia. Rdzeń filozofii C można podsumować jako:

data + algorithms = programs 

tak zaprojektować aplikację w C:

  1. trzeba dokładnie zastanowić się, co dane jest i określić struct s odzwierciedlające że oraz ułatwiać relacje między różnymi widokami danych.

  2. Musisz zastanowić się, jakie algorytmy będą działały na podstawie danych i ich danych. Pomaga to wyjaśnić, jakie powinieneś mieć, i pomóc pokazać, co powinno zostać zablokowane, aby utworzyć wielokrotne bloki kodu.

  3. Jednym ze sposobów poruszania się tego podejścia z podejściem OOP jest sobie wyobrazić, że jeden struct + jeden plik .c = klasa, i umieścić w pliku .h definicję struct i zewnętrznie dostępne funkcje (metody publiczne).

  4. Trzeba napisać dużo kodu, żeby robić nudne rzeczy, takie jak przydzielanie i uwalnianie pamięci oraz cały ten jazz. Nie jest tak źle, jak się wydaje, ale uwzględnij to w swoim projekcie.

2

Najpierw należy zidentyfikować komponenty i ich interakcje w celu rozwiązania problemu. następnie wewnątrz każdego komponentu, można zastosować poniższe praktyki.

  1. Najpierw zaprojektuj funkcje publiczne.
  2. zaprojektować strukturę danych (tzn.e struct) funkcje będą działać
  3. Zmodyfikuj funkcje publiczne, aby przyjąć odpowiednią strukturę jako argument wskaźnika. [Nie ma koncepcji zmiennej instancji w c. musisz zdefiniować strukturę i strukturę przejścia między funkcjami].
  4. pogrupuj funkcje z powiązaną strukturą danych w pliku nagłówkowym.
  5. dostarcza implementacje funkcji publicznych w oddzielnym pliku c, który zawiera zdefiniowany plik nagłówka.
  6. uczynić wszystkie metody prywatne/pomocnicze jako statyczne, aby nie były widoczne dla innych plików c.
  7. Ponieważ w C nie ma koncepcji przestrzeni nazw, upewnij się, że funkcje publiczne nie są w konflikcie z istniejącymi funkcjami biblioteki. niektórzy używają maniakowania nazwami, np. {krótka nazwa pliku nagłówkowego} _ {nazwa funkcji}
  8. przydzielanie i zwalnianie pamięci jest odpowiedzialnością programistów. lepiej jest zainicjować i uwolnić funkcje, aby przydzielić i wyczyścić pamięć wraz z zaprojektowanymi publicznymi funkcjami.
  9. Postępuj zgodnie ze stylami kodowania, które Ci odpowiadają.
  10. Zaprojektuj każdy komponent jako bibliotekę współużytkowaną, aby nie trzeba było kompilować ich za każdym razem.